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

Vue.js 如何对Cypress 6中的所有测试使用全局拦截?,vue.js,nuxt.js,cypress,Vue.js,Nuxt.js,Cypress,我想测试我站点的每个页面(Vue/Nuxt),但是应该模拟API调用 为此,有intercept()函数(在以前的Cypress版本中为route()): homepage.spec.js: describe('home page', () => { before(() => { cy.intercept('**/user-data', { fixture: 'user.json' }) cy.visit('http://localhost:8080') })

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

为此,有intercept()函数(在以前的Cypress版本中为route()):

homepage.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
});

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

但是所有API调用都应该模拟,所以所有API调用都是一样的吗?如果不是的话,您确实只模拟测试所需的端点是有意义的,我添加一行
cy.intercept(…,{…})
并不是太大的工作负载否,我的意思是我将模拟所有API调用。但是这个特定的(/user data)出现在每个页面上,所以在每个测试中重复完全相同的截取代码感觉是错误的。在我看来,在每个测试中都有截取代码是可以的,您也可以将其抽象为一个,所以您只需运行一行
cy.userDataMock()
等,如果您希望它是全局的,只要听一下对
test:before:run
的调用,然后运行命令,谢谢,我会检查的