簡體   English   中英

如何做出承諾拒絕測試?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM