[英]How can I make a promise reject for testing?
我設置了一個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之類的東西,還是有一些簡單的方法來使諾言失敗?
導致數據庫條目或您的api發生某些更改,使db.users.count()
調用失敗。
我最終使用了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');
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.