2016-04-22 58 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

它肯定不会造成任何伤害。但这是我们将所有方法定义为原型方法的方法论。如果这是唯一的选择,我可以去做这个改变,否则,如果我们找到替代方案,这将是非常好的。 –