我正在编写一个期望抛出错误的开玩笑测试:
it("safeGithubPush()", () => {
const err = new Error('job not valid')
expect(productionDeployJob.safeGithubProdPush(unsafeJob)).toThrow(err);
});
引发错误。但是,它不是开玩笑通过此测试,而是说它失败并指出在我的程序中创建此错误的位置
FAIL tests/unit/productionDeploy.test.js
● ProductionDeploy Test Class › safeGithubPush()
job not valid
8 | const uploadToS3Timeout = 20;
9 |
> 10 | const invalidJobDef = new Error("job not valid");
为什么当我告诉它预期相同的错误时,它会抱怨错误被抛出?
您正在就地调用safeGithubProdPush
方法。
为了让 Jest 捕获方法抛出的错误,你应该给expect
一个包装调用的函数:
expect(() => productionDeployJob.safeGithubProdPush(unsafeJob)).toThrow(err);
如文档中所示:
注意:您必须将代码包装在函数中,否则不会捕获错误并且断言将失败。
https://jestjs.io/docs/en/expect#tothrowerror