1

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

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

4

1 回答 1

0

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

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

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

于 2018-03-28T07:15:09.550 回答