在添加expect.hasAssertions()
和添加expect.assertions(0)
到现有的Jest(js)测试中时,我发现Jest意外地由于某些预期和实际的断言调用数量不匹配而导致某些测试失败。
预期将调用零个断言,但收到一个断言调用。
我发现,即使我从头创建了一个项目并添加了难以置信的简单测试,由于预期/实际的断言调用,Jest也会失败。
例如。expect.assertions(0)
从Jest网站添加示例到失败
test('two plus two is four', () => {
// I'd think this would pass but it fails
expect.assertions(0);
expect(2 + 2).toBe(4);
});
在expect.hasAssertions()
Jest网站通行证中添加示例
test('two plus two is four', () => {
// I'd think this would fail but it passes
expect.hasAssertions();
expect(2 + 2).toBe(4);
});
为什么在没有引发异常的情况下,杰斯特说有断言调用?
它是:26.4.2,节点:13.11.0,NPM:6.13.7
注意:这与预期调用一个断言不同,但收到零个断言调用
expect.assertions
断言存在指定数量的断言,即expect(...)...
调用。expect.assertions
断言有断言。他们没有断言确实有失败的断言。它们也会考虑失败的断言,但是由于在第一个失败的断言中测试失败,因此对它们进行计数是没有意义的。
由于存在1个断言(expect(2 + 2).toBe(4)
),因此expect.assertions(0)
失败。
因此,这些将通过:
test('two plus two is four', () => {
expect.assertions(1);
expect(2 + 2).toBe(4);
});
test('two plus two is four', () => {
expect.hasAssertions();
expect(2 + 2).toBe(4);
});
这些将失败:
test('two plus two is four', () => {
expect.assertions(0);
expect(2 + 2).toBe(4);
});
test('two plus two is four', () => {
expect.hasAssertions();
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句