我设置了db.js来进行所有数据库调用。这是查询数据库的其中一个函数的示例。
db.getUserCount = function () {
return new Promise (function (resolve, reject) {
db.users.count().then(function (result) {
resolve (result);
}, function(e) {
reject (e);
});
});
};
我是JavaScript和测试的新手。我用mocha和chai测试它是否解析了这个:
describe('getUserCount', function() {
it('should be fulfilled when called', function() {
return db.getUserCount().should.be.fulfilled;
});
});
如何测试承诺的拒绝部分。我是否必须使用像sinon这样的东西,或者是否有一些简单的方法可以使承诺失败?
答案 0 :(得分:0)
通过在数据库条目或api中进行一些更改来使db.users.count()
调用失败。
答案 1 :(得分:0)
我最终使用了sinon存根,所以其他测试仍然会通过。
describe('db.getUserCount rejection test', function() {
sinon.stub(db, 'getUserCount').returns(Q.reject(new Error(errorMessage)));
it('should be rejected when called', function() {
return db.getUserCount().should.be.rejected;
});
it.only('getUserCount responds with correct error message', function() {
return db.getUserCount().catch(function(err) {
expect(err.message).to.equal('Error could not connect to database');
});
});
});