[英]Testing a function argument which is a function
我正在測試一些代碼,但是在使用sinon時遇到了一些麻煩。 問題是我的函數之一將函數作為參數,但是我還沒有找到如何模擬它的方法。
通常,您會執行以下操作:
var get = sinon.stub($, 'get')
然后在使用$ .get之后:
sinon.assert.calledWith(get, expectedObject);
我的代碼如下:
function getUsers(usersPromise) {
const config = { date: new Date() };
return usersPromise(config)
.then(function (data) {
// Do stuff
})
}
我要做的是能夠模擬usersPromise。 因此,我將檢查是否使用正確的配置對象調用了該對象(我省略了大量值),然后還在.then函數中聲明了一些內容。
sinon.stub(usersPromise)無法工作,所以我有點迷路。
沒有足夠的信息來為您提供完整的解決方案,但似乎您首先要為.then
創建存根
var stubThen = sinon.stub();
然后為get
創建一個存根,並將stubThen
作為返回對象的屬性。
var stubGet = sinon.stub();
stubGet.returns({then: stubThen});
然后在您的測試代碼中,將stubGet
傳遞給getUsers
並進行相應的驗證。
我要做的是能夠模擬usersPromise。
堅持TDD的結果之一是,它迫使您在孤立的,可測試的塊中構建代碼。 這是以下事實的直接結果:您無法對函數的各個行或傳遞給它的參數執行測試。 在您的情況下,解決方案是按以下方式構建代碼:
var usersPromise = function(){};
function getUsers(usersPromise) {};
現在,您已經使usersPromise
一個隔離的塊,您可以對其進行測試,包括在調用getUsers
之前將其存根。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.