我在我的Node.js應用程序中有一個JS方法,我想單元測試。它會對服務方法進行多次調用,每次都會將該服務傳遞給一個回調函數;回調積累結果。使用Jasmine根據參數值存根JS回調
如何使用Jasmine來存儲服務方法,以便每次調用存根時,都會調用由參數確定的響應的回調函數?
這是(像)的方法,我測試:
function methodUnderTest() {
var result = [];
var f = function(response) {result.push(response)};
service_method(arg1, arg2, f);
service_method(other1, other2, f);
// Do something with the results...
}
我想指定,當service_method調用與ARG1和ARG2,存根將調用與特定響應的F回調,並當用other1和other2調用它時,它將調用具有不同特定響應的相同回調。
我會考慮一個不同的框架。 (我嘗試過Nodeunit,但沒有得到它做我想做的。)
這裏的兩個答案曲解了我的問題;我想知道爲什麼。我真的在測試methodUnderTest();我想驗證一下,在調用其依賴關係之後(在本例中爲service_method()),它會累積結果。 – Ladlestein
好吧,據我所知你想在這裏測試內部方法?但爲什麼你想嘲笑service_method()。這不是你模塊的一部分嗎?如果是這樣,不要嘲笑它。 –
不,Andreas - 當然,我想測試methodUnderTest()。它依賴於service_method(),它不是返回一個值而是調用一個回調函數。 service_method()是我想要的存根。它會回覆給f()和響應;我想要我的模擬service_method()回調它。 我已經成功地使用了Sinon.JS來存根service_method(),並調用帶有stubbed「return」值的回調函數。 – Ladlestein