INCLUSIVE TESTS
和only()
方法相反,.skip()
方法可以用于跳过某些测试测试集合和测试用例。所有被跳过的用例都会被标记为pending
用例,在报告中也会以pending
用例显示。下面是一个跳过整个测试集的例子。
describe('Array', function () {
describe.skip('#indexOf', function () {
// ...
})
})
或者指定跳过某一个测试用例:
describe('Array', function () {
describe('#indexOf()', function () {
it.skip('should return -1 unless present', function () {
// this test will not be run
})
it('should return the index when present', function () {
// this test will be run
})
})
})
最佳实践:使用
.skip()
方法来跳过某些不需要的测试用例而不是从代码中注释掉。
有些时候,测试用例需要某些特定的环境或者一些特殊的配置,但我们事先是无法确定的。这个时候,我们可以使用this.skip()
[译者注:这个时候就不能使用箭头函数了]根据条件在运行的时候跳过某些测试用例。
it('should only test in the correct environment', function () {
if(/* check the environment */) {
// make assertions
} else {
this.skip()
}
})
这个测试在报告中会以pending
状态呈现。为了避免测试逻辑混乱,在调用skip函数之后,就不要再在用例函数或after钩子中执行更多的逻辑了。
下面的这个测试和上面的相比,因为没有在else分支做任何事情,当if条件不满足的时候,它仍然会在报告中显示passing。
it('should only test in the correct environment', function () {
if (/* check test environment */) {
// make assertion
} else {
// do nothing
}
})
最佳事件:千万不要什么事情都不做,一个测试应该做个断言判断或者使用skip()
我们也可以在before钩子函数中使用.skip()来跳过多个测试用例或者测试集合。
before(function () {
if(/* check test environment */) {
// setup mode
} else {
this.skip()
}
})
Mocha v3.0.0之前,在异步的测试用例和钩子函数中是不支持
this.skip()
的。