柴承诺深度财产测试

时间:2018-03-23 18:03:52

标签: typescript chai chai-as-promised

我有一个插入表格并返回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']

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

1 个答案:

答案 0 :(得分:0)

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

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

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