我正在编写一个开玩笑的测试,期望会引发错误:
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");
为什么当我告诉我期望同样的错误时,它会抱怨该错误被抛出?
答案 0 :(得分:2)
您正在就地调用safeGithubProdPush
方法。
为了让Jest捕获方法抛出的错误,您应该给expect
一个包装调用的函数:
expect(() => productionDeployJob.safeGithubProdPush(unsafeJob)).toThrow(err);
与文档中一样:
注意:您必须将代码包装在一个函数中,否则错误将不会被捕获并且断言将失败。