这个问题特别与在赛普拉斯中用
cy.intercept()
存根,以及编写E2E测试有关。我试图弄清楚这些拦截存根究竟在哪里被清除。
在赛普拉斯文档中,他们使用了“套件”和“测试”等术语,但在我能找到的文档中的任何地方都没有明确定义这些术语,而且我读得越多,我就越困惑。
对于拦截,特别是,文档说:
每次测试前都会自动清除所有拦截。 (参考)
所以让我们从他们的文档中扩展一个小例子并说我有这个:
describe('My First Test', () => {
it('Does not do much!', () => {
expect(true).to.equal(true)
})
it('Does do this though!', () => {
expect(true).to.equal(true)
})
it('Is pretty great!', () => {
expect(true).to.equal(true)
})
})
据我所知实际运行 Cypress,截距在每个
it(...)
块后被清除 - 所以这些块中的每一个都被认为是“测试”?
那这里每一个
describe(...)
都算是“套房”吗?
测试是对
it()
的调用,套件是对describe()
或context()
的调用。
Cypress使用的是Mocha框架,所以这个问题适用于你的问题suite函数在Mocha中的作用是什么?
describe() 和 suite() 本质上做同样的事情
注意,Cypress 包装了 Mocha 套件函数
describe()
和 context()
并在全局公开它们,这就是为什么您可以直接在规范中使用它们的原因。
Mocha 也有
suite()
和 test()
函数,赛普拉斯没有传递这些函数,但是你可以使用 Mocha global 访问它们
Mocha.suite('My First Test', () => {
Mocha.test('Does not do much!', () => {
expect(true).to.equal(true)
})
Mocha.test('Does do this though!', () => {
expect(true).to.equal(true)
})
Mocha.test('Is pretty great!', () => {
expect(true).to.equal(true)
})
})