我如何使用赛普拉斯存根对外部资源的请求?
编辑:我认为我已经解决了我的问题。我尝试访问的API资源在发出请求时使用了POST方法。我在路由中添加了以下内容:
beforeEach(() => {
cy.server();
cy.route({
method: 'POST', // <--- added this
url: '**/dev/register',
response: {
message: 'okay'
}
}).as('registerUser');
});
最初,我假设未指定该方法将导致Cypress忽略它。事实证明,赛普拉斯只是默认使用GET方法。
我已经为此努力了一段时间。我们的项目使用赛普拉斯进行自动化测试。我的目标是将请求存根到我们的api服务,该服务位于与应用程序不同的url上。调用api时,我们的应用程序使用Axios。根据赛普拉斯的文档,以下模式应该可以解决问题:
beforeEach(() => {
cy.server();
cy.route({
url: '**/dev/register',
response: {
message: 'okay'
}
}).as('registerUser');
});
但是,当我运行测试时,我可以看到请求仍在传递给实际资源。当我在控制台中打印请求时,看到以下内容:
到目前为止,我所知道的是cy.route不适用于Fetch,而仅适用于XMLHttpRequests(XHR?)。由于我们使用的是Axios,因此在这种情况下,我假设这是不相关的信息。
编辑: 通过使用赛普拉斯的minimatch集成,我可以看到我的模式正在工作:
Cypress.minimatch('https://.../dev/register', '**/dev/register', { matchBase: true });
true
相关赛普拉斯文档:
我阅读过的其他stackoverflow帖子: