我有一个插入表格并返回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']
这似乎与我的控制台日志所说的属性相矛盾。
答案 0 :(得分:0)
在拒绝案例中,reason
是由chai-as-promised
评估的对象。所以你的断言必须是:
return expect(insertTable()).to.eventually.be.rejected.and.have.property("code").equal('ER_DUP_ENTRY');
不要忘记返回等待履行承诺链的承诺