开玩笑抱怨错误......我告诉开玩笑期待

Posted

技术标签:

【中文标题】开玩笑抱怨错误......我告诉开玩笑期待【英文标题】:Jest complains of error...that I told jest to expect 【发布时间】:2020-04-26 05:47:20 【问题描述】:

我正在编写一个预期会抛出错误的笑话测试:

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");

当我告诉它期待同样的错误时,它为什么抱怨抛出了错误?

【问题讨论】:

【参考方案1】:

您正在就地调用safeGithubProdPush 方法。

为了让 Jest 捕获方法抛出的错误,您应该给 expect 一个包装调用的函数:

expect(() => productionDeployJob.safeGithubProdPush(unsafeJob)).toThrow(err);

如文档中所述:

注意:必须将代码包装在一个函数中,否则错误不会被捕获,断言会失败。

https://jestjs.io/docs/en/expect#tothrowerror

【讨论】:

以上是关于开玩笑抱怨错误......我告诉开玩笑期待的主要内容,如果未能解决你的问题,请参考以下文章