为什么 fixture 仅在第一个 运行 组件测试中加载
Why does fixture only load in the first run component test
我正在使用 Cypress 组件测试。我目前有以下代码来设置我的组件测试套件之一,加载一次夹具(之前)然后每次安装它(beforeEach)
before(() => {
cy.fixture('entries/index').as('index').then( (index) => {
index.forEach( (item) => {
item.created_at = DateTime.fromISO(item.created_at)
})
})
})
beforeEach(function() {
mount(component, {
propsData: {'index':this.index},
})
})
对于第一个测试 运行,这完全符合预期,但对于第二个测试失败,因为 'this.index' 对于第二个测试未定义。通过转储输出,这发生在第一个测试完成之后,而不是组件安装时。
it("Does foo",() => {
cy.contains('foo')
})
it("Does bar", () => {
cy.contains('bar')
})
第一个测试有效,第二个测试组件挂载了空数据。我究竟做错了什么?我可以将 fixture 从 before 移动到 beforeEach,但是 fixture 文件在只需要完成一次时会被读取多次。
这是 Mocha 的默认行为,因此每次测试后都会清除别名。您可以从 Cypress docs 阅读更多相关信息。因此,移动到 beforeEach()
应该可以为您解决问题。
beforeEach(function() {
cy.fixture('entries/index').as('index').then((index) => {
index.forEach((item) => {
item.created_at = DateTime.fromISO(item.created_at)
})
})
})
我可以将 fixture 从 before 移动到 beforeEach,但是 fixture 文件被读取多次,而它只需要完成一次。
实际上,赛普拉斯缓存读取的夹具正是出于这个原因!
但是在某些边缘情况下,更新了固定装置(有点像一个简单的数据库)并且由于缓存而看不到新数据。
我正在使用 Cypress 组件测试。我目前有以下代码来设置我的组件测试套件之一,加载一次夹具(之前)然后每次安装它(beforeEach)
before(() => {
cy.fixture('entries/index').as('index').then( (index) => {
index.forEach( (item) => {
item.created_at = DateTime.fromISO(item.created_at)
})
})
})
beforeEach(function() {
mount(component, {
propsData: {'index':this.index},
})
})
对于第一个测试 运行,这完全符合预期,但对于第二个测试失败,因为 'this.index' 对于第二个测试未定义。通过转储输出,这发生在第一个测试完成之后,而不是组件安装时。
it("Does foo",() => {
cy.contains('foo')
})
it("Does bar", () => {
cy.contains('bar')
})
第一个测试有效,第二个测试组件挂载了空数据。我究竟做错了什么?我可以将 fixture 从 before 移动到 beforeEach,但是 fixture 文件在只需要完成一次时会被读取多次。
这是 Mocha 的默认行为,因此每次测试后都会清除别名。您可以从 Cypress docs 阅读更多相关信息。因此,移动到 beforeEach()
应该可以为您解决问题。
beforeEach(function() {
cy.fixture('entries/index').as('index').then((index) => {
index.forEach((item) => {
item.created_at = DateTime.fromISO(item.created_at)
})
})
})
我可以将 fixture 从 before 移动到 beforeEach,但是 fixture 文件被读取多次,而它只需要完成一次。
实际上,赛普拉斯缓存读取的夹具正是出于这个原因!
但是在某些边缘情况下,更新了固定装置(有点像一个简单的数据库)并且由于缓存而看不到新数据。