Javascript 为什么Jest会在不应该的时候抛出错误?
我有这样一个函数:Javascript 为什么Jest会在不应该的时候抛出错误?,javascript,jestjs,Javascript,Jestjs,我有这样一个函数: const test = (match) => { if (match !== 'cat') { throw new TypeError() } } 我的测试是: describe('test', () => { it('must throw error'() => { try { test('cat') catch(err){ expect(err).toStrictEqual(new T
const test = (match) => {
if (match !== 'cat') {
throw new TypeError()
}
}
我的测试是:
describe('test', () => {
it('must throw error'() => {
try {
test('cat')
catch(err){
expect(err).toStrictEqual(new TypeError())
}
}
}
但是测试通过了。它应该失败。为什么它通过了?只有在未达到预期的情况下,测试才会失败。在您的情况下,因为没有抛出错误,所以甚至不会计算期望值。因此,测试通过 要解决此问题,请执行以下操作之一:
describe('test', () => {
it('must throw error'() => {
expect(() => test('cat')).toThrow(TypeError)
}
}
请注意,正如所示,这只能在构造函数或错误消息上断言
toThrow
断言构造函数或消息,而不是两者。如果toThrow(TypeError)
或toThrow(“”)
是不够的,那么1是最好的。
describe('test', () => {
it('must throw error'() => {
expect(() => test('cat')).toThrow(TypeError)
}
}