【发布时间】:2018-08-28 05:25:34
【问题描述】:
我想在每个测试之间传递/共享数据。在 Cypress 中实现它的最佳方式是什么?
例如:
it('test 1'), () => {
cy.wrap('one').as('a')
const state1 = 'stat1'
})
it('test 2'), () => {
cy.wrap('two').as('b')
})
it('test 2'), () => {
//I want to access this.a and this.b
//Also I want to access state1
})
【问题讨论】:
-
测试不应该共享状态——上下文是什么,你为什么认为你需要这个?
-
如果要在其中使用 this.a,请避免使用速记箭头函数。使用 function() { 代替。 @jonrsharpe 有时您确实需要它:例如,第一个测试在单击某些内容时从剪贴板中检索某些内容,第二个测试使用此特定值来测试某些请求是否有效。
-
@trainoasis 那么您的测试依赖于彼此以及它们的运行顺序,这是一种反模式。
-
@jonrsharpe 同意了,但是您如何编写这样的测试而不模拟所有内容或进行 1 个大型测试? (部署后在 CI 中将其作为集成/验收测试运行)
-
@trainoasis 没有更多上下文很难说,但根据您上面的描述:只需进行一次测试。
标签: cypress