我正在尝试使用 chai-as-promised 来测试我用 bluebird promises 编写的一段代码。
我要测试的方法返回一个 Promise 拒绝,如下所示:
/**
* Creates a new user entry in the database.
* @param {JSONObject} userData -- User details for creation.
* @return => {boolean} true if succefully created, false otherwise.
**/
createUser: function(userData) {
return Promise.reject();
},
测试代码是这样的:
describe('User creation test suite', function() {
it('Should successfully create root user', function(done) {
expect(users.createUser(sampleUsers.raam))
.to.eventually.have.property('id').and.notify(done);
//expect(Promise.resolve({foo:'bar'})).to.eventually.have.property('id').and.notify(done);
});
尽管该方法故意失败,但测试用例被标记为通过。这是输出。
用户创建测试套件
✓ Should successfully create root user
如果我直接使用硬编码字符串进行测试,例如
expect(Promise.resolve({foo:'bar'})).to.eventually.have.property('id').and.notify(done);
然后它似乎工作。我在这里做错了什么?
编辑 我发现它与蓝鸟承诺或我正在测试的方法无关。一个简单的硬编码拒绝也不能正常工作。那是...,
expect(Promise.reject({foo:'bar'})).to.eventually.have.property('id').and.notify(done)
返回通过,而不是失败。我在这里做错了什么吗?