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

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

【讨论】:

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

混合玩笑期待与排毒期待

为啥 Meteor 抱怨集合的插入方法已经定义?

赛普拉斯在开玩笑断言中导致类型错误

使用开玩笑超时错误进行排毒:“分配给未定义”

Vue.Js 测试与开玩笑错误 axios

Qt 告诉我我的 SLOT 不存在,但是通过 make clean,让它不再抱怨