Cypress 不匹配路线
2019-01-11
6250
我正在尝试编写一个模拟慢速 API 的 Cypress 测试,因此在阅读了一些文档后,我想到了这个:
before(function() {
cy.server({delay: 5000});
});
beforeEach(() => {
cy.route({
method: "GET",
url: "**/api/**"
});
cy.visit("http://localhost:9000");
});
这应该会为所有对
API
的请求添加 5 秒的延迟,对吗?
我看到的问题是,即使有大量对
*/api/*
的调用,它也无法匹配任何请求。
Cypress GUI 确实可以看到路线……它只是不匹配。
这可能是什么原因造成的?
3个回答
如果您输入整个路线,如 cypress 日志中所示,您可能会发现它有效。
minimatch 似乎没有很好地实现前瞻通配符。它在
/
字符上可以很好地分隔,但在
?
或
#
上却不太好,因此如果您尝试容纳查询字符串,这可能是您遇到困难的地方。
您可以在控制台中使用
Cypress.minimatch
来查看发生了什么。有关如何执行此操作的更多信息,请参阅
文档
。
Cypress 还将接受正则表达式。像
/\/api\//
这样的代码应该适合您。
marrs
2019-02-18
对我来说,我的模式对于我的 POST 请求是正确的,但问题是我没有覆盖默认响应。我只是希望 API 会返回 500 错误,但除非我指定响应,否则它会调用真正的 API 端点。文档说默认响应是一个空对象,但由于某种原因,除非我提供一个值,否则它会调用。一旦我提供了响应,Cypress GUI 就会显示它正在正确地终止调用。
将其从:
cy.route({
method: "POST",
url: /my-endpoint/,
status: 500,
});
更改为
cy.route({
method: "POST",
url: /my-endpoint/,
response: {},
status: 500,
});
对我来说是有效的。
Greg Van Gorp
2020-05-05