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')
})
第一个测试有效,第二个测试组件安装了空数据。我究竟做错了什么?我可以将夹具从之前移动到 beforeEach,但是当它只需要执行一次时,夹具文件会被多次读取。
解决方案
我可以将夹具从之前移动到 beforeEach,但是当它只需要执行一次时,夹具文件会被多次读取。
实际上,赛普拉斯正是出于这个原因缓存了读取的夹具!
但是在某些极端情况下,固定装置被更新(有点像一个简单的数据库)并且由于缓存而看不到新数据。
推荐阅读
- kotlin - 通过字符串 kotlin 加载图像 url
- ios - IOS swift框架中的FCM集成
- php - 在 Woocommerce 中将状态结帐字段设为可选
- python - 如何将我的课程整合到最终课程中?
- r - 在 R 中为大型数据集添加行
- android - 将 USB 设备连接到 Android 模拟器
- c# - 带有自定义刻度的滑块(标签和速度)
- python - 在 Cloud Dataflow 服务上运行模板
- c# - dotnet pack 可以在不添加其他 nuget 包的内容文件的情况下创建 nuget 包吗?
- c# - 如何从 Web 浏览器控件中获取价值到 Windows 窗体应用程序文本框?