JEST 测试用例应该因 try-catch 而失败

JEST testcase should failed with try-catch

我想知道为什么我的下面的测试用例在使用 try-catch 块后通过了,虽然它应该会失败:

test("test", () => {
  try {
    expect(true).toBe(false);
  } catch (err) {
    console.log(err);
  }
});

虽然没有 try-catch 它失败了:

test("test", () => {
  expect(true).toBe(false);
});

只有在抛出错误时测试才会失败。

断言 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
  }
});

希望对您有所帮助。