2013-08-01 18 views
1

我正在使用Mocha來測試Node.js API。我需要測試一個檢查更新是否可用的路由。該路由接受當前安裝的版本號,並將其與通過HTTP請求檢索的可用版本進行比較。間諜,存根或模擬?或以上都不是?

要獲取最新版本,請調用模型方法。 Client.availableVersion()發出HTTP請求,進行一些簡單的操作並將可用版本傳遞給回調函數。相當簡單的東西,但現在我想測試我的update()路線,我需要能夠控制Client.availableVersion()返回的內容。

在閱讀了摩卡文檔和Sinon文檔後,我被提到了......我被卡住了。聽起來Sinon會處理我需要的東西,但實施讓我有點困惑。

下面是從我的路由方法的代碼段:

update: function(req, res, next) { 
    var installedVersion = req.params.version; 

    client.availableVersion(function(err, availableVersion) { 
    if(!err) { 
     if(parseInt(installedVersion, 10) < parseInt(availableVersion, 10)) { 
     // SEND UPDATE AVAILABLE RESPONSE 
     } 

     // SEND NO UPDATE AVAILABLE RESPONSE 
    } 
    else { 
     res.send(500, err); 
    } 
    }) 
} 

在正確的方向輕推任意將不勝感激。

回答

0

我肯定會去與存根(stub)。 http://sinonjs.org/docs/#stubs

我會用stub.yields(...)

var next = sinon.spy() 
var err = ... //Whatever object you want to pass as error or undefined 
var availbleVersion = ... // A fake of the response the method is supposed to give 
client.availableVersion = sinon.stub().yields(err, availableVersion); 

myRoute.update(fakeReq, fakeRes, next); 

//All you expectations 
+0

感謝。這似乎正是我所需要做的。 –

相關問題