【问题标题】:chai as promised deep property test柴如许深属性测试
【发布时间】:2018-03-23 18:03:51
【问题描述】:

我有一个插入表格并返回Promise 的函数。我正在使用chai-as-promised 测试重复插入被拒绝。我要测试的是拒绝和原因码。当我运行函数并记录console.log(err.reason.code) 时,我得到ER_DUP_ENTRY。确认这对我的测试来说已经足够了,所以我尝试如下断言:

expect(insertTable()).to.eventually.be.rejected.and.eventually.to.have.deep.property('reason',{code: 'ER_DUP_ENTRY'}).notify(done);

根据chaijs,语法似乎是正确的。但是我的测试失败了:

AssertionError: expected { Object (status, reason) } to have deep property 'reason' of { code: 'ER_DUP_ENTRY' }, but got [Error: ER_DUP_ENTRY: Duplicate entry 'my_dupe' for key 'name_UNIQUE']

这似乎与我的控制台日志所说的属性相矛盾。

【问题讨论】:

  • 你能显示承诺被拒绝的代码吗?我知道承诺被 Error 对象拒绝,您等待 Objectreason 属性

标签: typescript chai chai-as-promised


【解决方案1】:

在拒绝情况下,reason 是由chai-as-promised 评估的对象。所以你的断言必须是:

return expect(insertTable()).to.eventually.be.rejected.and.have.property("code").equal('ER_DUP_ENTRY');

不要忘记返回承诺等待承诺链的履行

【讨论】:

  • reason 是我将错误返回的属性。当我尝试执行您的示例时遇到AssertionError: expected { Object (status, reason) } to have property 'code'
猜你喜欢
  • 2021-11-01
  • 2019-08-26
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
相关资源
最近更新 更多