2016-04-22 60 views
0

我已經實現了使用請求模塊調用HTTP API的節點js代碼。 對於GET,POST,放,刪除,我直接調用請求()的要求模塊,使用sinon存根請求構造函數

var sendRequest = function(req, callback) { 
    request(req, function(err, res) { 
     if (err) { 
      callback(err, null, res); 
     } else { 
      callback(null, res); 
     } 
    } 
} 

我想要調用sendRequest將(),但嘲笑的請求的響應()。 任何指針。

+0

您可以使用興農喜歡這裏說明 - > http://stackoverflow.com/questions/20050507/creating-request- stub-with-sinon-in-mocha/32868852#32868852 – Bianca

+0

我經歷了鏈接,但在這種情況下,我們將不得不編寫獨立的get(),put()等。正如你可以檢查上面我已經實現的請求()負責處理所有的方法類型。我需要嘲笑那個特殊的請求()。 –

回答

0

之一許多選項是使用proxyquire存根請求模塊:

var proxyquire = require('proxyquire') 
    , assert = require('assert') 
    , requestStub = function (req, callback) { callback(req); }; 

// assuming you export the sendRequest from that file 
var sendRequest = proxyquire('./sendRequest', { 'request': pathStub }); 

describe('sendRequest', function() { 
    it('request', function (done) { 
     var someReq = {a: 'b'}; 
     sendRequest(someReq, function (req) { 
      assert.equal(someReq, req); 
      done(); 
     }); 
    }); 
}); 
+0

感謝您的回覆,但我觀察到的是讓它工作,我將不得不導出sendRequest()。在我的情況下,sendRequest是原型方法,我無法導出它。 –

+0

@PriyankaWare您隨時歡迎。如果您導出該功能會導致多大的傷害?你可以把它移動到一個單獨的私人文件嗎? –

+0

它肯定不會造成任何傷害。但這是我們將所有方法定義爲原型方法的方法論。如果這是唯一的選擇,我可以去做這個改變,否則,如果我們找到替代方案,這將是非常好的。 –