如何正确使用赛普拉斯路由存根API方法

时间:2020-09-24 16:05:20

标签: cypress

问题:

我如何使用赛普拉斯存根对外部资源的请求?


编辑:我认为我已经解决了我的问题。我尝试访问的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');
});

但是,当我运行测试时,我可以看到请求仍在传递给实际资源。当我在控制台中打印请求时,看到以下内容:

  • 网址:https://.../dev/register
  • 已存根:否

到目前为止,我所知道的是cy.route不适用于Fetch,而仅适用于XMLHttpRequests(XHR?)。由于我们使用的是Axios,因此在这种情况下,我假设这是不相关的信息。

编辑: 通过使用赛普拉斯的minimatch集成,我可以看到我的模式正在工作:

Cypress.minimatch('https://.../dev/register', '**/dev/register', { matchBase: true });

true

参考:

相关赛普拉斯文档:

我阅读过的其他stackoverflow帖子:

0 个答案:

没有答案