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

时间:2020-02-05 17:48:23

标签: reactjs jestjs try-catch enzyme testcase

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

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

如果没有try-catch,它将失败:

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

1 个答案:

答案 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
  }
});

我希望这会有所帮助。