0

我有一个发布请求块,我需要在非导出函数中存根响应,如下所述:

function callMicroserive(a, b, c){
//before post request code part
request.post(requestoptions, function (error, httpResponse, body) {//code}
//after post request code part
}

我不想整体上存根并返回 callMicroserive 函数,但需要在函数内部存根 http post 请求。

我尝试使用 sinon 以及 rewire setter 和 getter 方法来实现。但我不能单独使用存根 http 请求块。谁能提供这个问题的代码模板?

代理查询

尝试使用 proxyquire,如下所述:

const postcall = proxyquire('../plugins/routes/handlers/contentservicehandler.js', {post : {httpResponse:{statusCode : '200'},'@noCallThru': true}}); 
postcall();

Sinon 使用Sinon,尝试了以下方法:

var request = require('request');
sinon.stub(request, 'post').returns(//jsonObject);

也试过

sinon.yields(null, httpresponse,body)// to send arguments to callback

重新接线

const contentHandler = rewire('../plugins/routes/handlers/contentservicehandler.js');
const postCall = {post:contentHandler.__get__('request.post')};
var stub = sinon.stub(postCall,'post').returns(//json);
contentHandler.__set__('post', stub);

使用所有单元包调用 request.post() 时出现错误“无效的 URI / ”。看起来它正在打击服务器以获得实际响应。

4

0 回答 0