赛普拉斯拦截:设置/清除每个套件而不是每个测试

问题描述 投票:0回答:1

我有一个用于 E2E 测试的 Cypress (

12.9.0
) 设置,其中
e2e
文件夹中的每个文件都是一个具有一个
describe()
和许多
it()
测试的单个 e2e 场景。

每个场景及其测试都依赖于多个

intercept()
存根(每个场景都有相同的存根)并且不需要在每个
it()
测试之间重置 - 我希望它们为套件设置一次。

我原以为将

testIsolation
配置值设置为
false
会做到这一点,但似乎这并不能阻止拦截存根被清除 - 它只是 保留浏览器上下文.

有没有办法做到这一点,以防止必须为每个测试重新创建

intercept()
模拟,而是能够为每个测试套件创建一次模拟(
describe()
)?

testing cypress ui-automation cypress-intercept
1个回答
1
投票

最简单的方法是使用

beforeEach()
挂钩。它在每次测试之前运行,因此每次都会重新创建您的拦截路线。

context('This is your test suite title', () => {
  beforeEach(() => {
    cy.intercept('**/api/*', { some: 'value' }).as('api')
  })

  it('This is your test case one title', () => {
    cy.visit('/')
    cy.wait('@api')           // passes
  })

  it('This is your test case two title', () => {
    cy.visit('/')
    cy.wait('@api')           // passes
  })
})

使用简单的 HTML 片段进行测试

<script>
  fetch('https://some-domain/api/1')
</script>

要看到它在第二次测试中失败,请将挂钩从

beforeEach()
更改为
before()
.

© www.soinside.com 2019 - 2024. All rights reserved.