我想知道为什么在使用try-catch块后,下面的测试用例仍通过了,虽然它应该失败了:
test("test", () => {
try {
expect(true).toBe(false);
} catch (err) {
console.log(err);
}
});
如果没有try-catch,它将失败:
test("test", () => {
expect(true).toBe(false);
});
答案 0 :(得分:2)
只有抛出错误,测试才会失败。
断言expect(true).toBe(false);
将引发错误,Jest将捕获该错误并将其记录为失败测试。
但是,使用try-catch块将捕获错误并允许您根据需要进行处理。
在您的情况下,您只是通过控制台对其进行日志记录,因此Jest不再捕获任何错误...因此测试通过。
如果要在catch
块中重新抛出错误,则Jest将捕获该错误并通过测试:
test("test", () => {
try {
expect(true).toBe(false);
} catch (err) {
console.log(err);
throw err; // <— Re-throw error
}
});
我希望这会有所帮助。