Блок-заглушка Sinon для http-запроса внутри неэкспортируемой функции в node.js - PullRequest
0 голосов
/ 16 января 2019

У меня был блок пост-запроса, для которого мне нужно было заглушить ответ внутри неэкспортированной функции, как указано ниже:

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 () со всеми пакетами модулей.Похоже, что он попадает на сервер для фактического ответа.

...