У меня был блок пост-запроса, для которого мне нужно было заглушить ответ внутри неэкспортированной функции, как указано ниже:
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 вместе с методами переустановки и получения. Но я не могу сделать заглушку блока запроса 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
Rewire
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);
Ошибка получения ' Неверный URI / 'когда вызывается request.post () со всеми пакетами модулей.Похоже, что он попадает на сервер для фактического ответа.