使用 Cypress 为 Unstubbed 路由强制错误
Forcing Errors For Unstubbed Routes With Cypress
我正在使用 Cypress 测试 Gatsby app/site。它从多个页面多次调用 api。我们已经决定对所有这些请求进行存根和模拟,因此我们的测试永远不会影响我们的生活 api。
我一直在寻找一种方法,如果对我们的任何 API 端点的请求未被存根,我会发现 Cypress 错误,我发现 force404
配置参数(docs) for cy.server
强制对任何未存根的路由执行 404 returned。这很好用,但实际上太好了。 Gatsby 在内部使用 XHR 来预加载其他页面(除其他外),这会导致所有这些页面也出现 return 404,从而有效地破坏应用程序。
有没有一种方法可以将 cy.server
配置为仅 return 来自特定域上未存根路由的 404。例如,如果我们的 api 域是 api.example.com
。有没有一种方法可以将 cy.server
配置为 return 404,仅针对未存根的 api.example.com
请求,同时将对其他域或同一域的请求保持不变。
你试过白名单吗?您可以在此处添加规则以列出所有不属于您的服务器的域
https://docs.cypress.io/api/commands/server.html#Change-the-default-whitelisting
cy.server({
whitelist: (xhr) => {
// specify your own function that should return
// truthy if you want this xhr to be ignored,
// not logged, and not stubbed.
}
})
我正在使用 Cypress 测试 Gatsby app/site。它从多个页面多次调用 api。我们已经决定对所有这些请求进行存根和模拟,因此我们的测试永远不会影响我们的生活 api。
我一直在寻找一种方法,如果对我们的任何 API 端点的请求未被存根,我会发现 Cypress 错误,我发现 force404
配置参数(docs) for cy.server
强制对任何未存根的路由执行 404 returned。这很好用,但实际上太好了。 Gatsby 在内部使用 XHR 来预加载其他页面(除其他外),这会导致所有这些页面也出现 return 404,从而有效地破坏应用程序。
有没有一种方法可以将 cy.server
配置为仅 return 来自特定域上未存根路由的 404。例如,如果我们的 api 域是 api.example.com
。有没有一种方法可以将 cy.server
配置为 return 404,仅针对未存根的 api.example.com
请求,同时将对其他域或同一域的请求保持不变。
你试过白名单吗?您可以在此处添加规则以列出所有不属于您的服务器的域
https://docs.cypress.io/api/commands/server.html#Change-the-default-whitelisting
cy.server({
whitelist: (xhr) => {
// specify your own function that should return
// truthy if you want this xhr to be ignored,
// not logged, and not stubbed.
}
})