tod*_*ist 12 javascript testing mocha.js promise chai
我试图用Chai-as-Promised,Mocha和"should"方言来测试被拒绝的Promise的细节.承诺由蓝鸟实施.
这很好用:
it('it should be rejected when given bad credentials', function () {
var promiseOfUsers = db.auth("bad", "credentials").getUsers();
return promiseOfUsers.should.eventually.be.rejectedWith(Error)
});
Run Code Online (Sandbox Code Playgroud)
该错误有一个"status"属性.我想声称状态是401
这不起作用:
it('it should be rejected when given bad credentials', function () {
var promiseOfUsers = db.auth("bad", "credentials").getUsers();
return promiseOfUsers.should.eventually.be.rejectedWith(Error)
.that.has.property('status')
.that.equals(401)
});
Run Code Online (Sandbox Code Playgroud)
似乎任何在没有引用"被拒绝"或者被拒绝(错误)的情况下断言的尝试都会失败并且只是将错误输出到控制台.
我该如何深入研究拒绝的原因?
小智 10
我认为rejectedWith()处理程序有一些问题.但你可以这样做:
promiseOfUsers.should.be.rejected.and.eventually.have.property("status",401)
如果你想检查你的承诺是否被拒绝并检查结果对象(又名原因):
return fooPromise.should.be.rejected.and.eventually.deep.equal({
'x': 1,
'y': 1,
'z': 2
})
Run Code Online (Sandbox Code Playgroud)
您可以更改deep.equal为任何其他常用的chai 匹配器.
注意:这是@ sertug答案的延伸,希望对于那些正在寻找此问题的人来说非常有用.