如何对 Cypress 6 中的所有测试使用全局拦截?

nor*_*orr 9 vue.js nuxt.js cypress

我想测试我网站的每个页面(Vue/Nuxt),但 API 调用应该被模拟。

为此,有拦截()函数(以前的赛普拉斯版本中的路由()):

主页.spec.js:

describe('home page', () => {
  before(() => {
    cy.intercept('**/user-data', { fixture: 'user.json' })
    cy.visit('http://localhost:8080')
  })

  it('renders header, () => {
      cy.contains('#header', 'test');
  });

  // some other tests for homepage
});
Run Code Online (Sandbox Code Playgroud)

很酷,它可以工作,但是我在每个页面上都有这个特定的 API 调用(获取记录的用户信息)。我不想在每个测试文件中重复此拦截代码,例如 contact.spec.js。我找不到全局设置此拦截的方法?嘲笑 axios 的正确方法是什么?

thi*_*ign 4

cypress 中没有“全局拦截”,但您可以beforeEach向支持文件添加一个挂钩,该挂钩将适用于每个测试用例:

cypress/support/e2e.ts

beforeEach(() => {
  cy.intercept()
})
Run Code Online (Sandbox Code Playgroud)