我是新來的在node.js中測試,我想模擬一個特定的函數調用返回的過程,看起來像下面。node.js中的模擬函數返回測試
doSomething(function(err, res){
callAnotherOne(res, function(err, result){
getDataFromDB(result, function(err, docs){
//some logic over the docs here
})
})
})
,我想嘲笑的功能爲getDataFromDB()和專門的文件(使用MongoDB的),它返回。 我怎麼能用摩卡做這樣的事情?
部分代碼,從邏輯條之間,如下:
filterTweets(item, input, function(err, item) {
//Some filtering and logging here
db.getTwitterReplies(item, function(err, result) {
if(err) {
return callback('Failed to retrieve tweet replies');
}
//Do some work here on the item using the result (tweet replies)
/***** Here I want to test that the result is the expected ****/
db.storeTweets(item function (err, result){
//error checks, logging
callback();
});
});
});
基於在twitter回覆(函數調用「getTwitterReplies」)的量,我將相應地修改我的對象(沒不包括該代碼)。我想看看如果根據不同的回覆結果,我的對象按預期構建。
p.s.我也在一些搜索後檢查了sinon.js,並設法模擬回調(通過在我的項目之外編寫一些測試代碼)而不是返回嵌套函數調用的回調。
導入的,我不能真正想到這個解決方案,而沒有看到它是如何綁在一起的一個例子。 – James 2014-09-22 10:59:59
我編輯我的答案,通過添加我想模擬的代碼。 – 2014-09-22 11:45:28
require()的範圍可以提供一種方法來在sinon.js的測試中進行簡單的依賴注入,而不需要引入大量額外的函數參數。我將根據這些方面進行更廣泛的回答。 – LrdCasimir 2014-09-23 00:35:51