这个问题特别与在Cypress中使用cy. intercept()
进行存根以及编写E2E测试有关。我正试图弄清楚这些拦截存根到底在哪里被清除。
在Cypress留档中,他们使用诸如“套件”和“测试”之类的术语,但这些术语在我能找到的文档中的任何地方都没有明确定义,我读得越多,我就越困惑。
特别是对于拦截,留档说:
每次测试前都会自动清除所有拦截。(参考)
所以让我们从他们的留档中扩展一个小例子,说我有这个:
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(…)
块之后都会清除拦截-所以这些块中的每一个都被认为是“测试”?
那么每个描述(…)
在这里都会被视为“套件”?
测试是对it()
的调用,套件是对描述()
或context()
的调用。
赛普拉斯使用摩卡框架,所以这个问题适用于你的问题摩卡套件功能的作用是什么?
描述()和套件()本质上做同样的事情
请注意,Cypress包装了Mocha套件函数描述()
和context()
并全局公开它们,这就是您可以直接在规范中使用它们的原因。
Mocha还有Cypress不会传递的kit()
和test()
函数,但您可以使用Mocha全局访问它们
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)
})
})