Я запускаю свой тестовый пакет, используя mocha
, через gulp-jsx-coverage
и gulp-mocha
. Все мои тесты выполняются и проходят/сбой, как и ожидалось. Тем не менее, некоторые из моих тестируемых модулей делают HTTP-запросы к моему API через библиотеку superagent
.
При разработке я также запускаю свой API на localhost:3000
рядом с моим клиентским приложением, и поэтому это URL-адрес, который пытается получить мой клиентский тест. Однако при тестировании API обычно не работает. Это приводит к следующей ошибке при каждом прохождении запроса:
Error in plugin 'gulp-mocha'
Message:
connect ECONNREFUSED
Details:
code: ECONNREFUSED
errno: ECONNREFUSED
syscall: connect
domainEmitter: [object Object]
domain: [object Object]
domainThrown: false
Stack:
Error: connect ECONNREFUSED
at exports._errnoException (util.js:746:11)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:983:19)
Я попытался усечь все методы в библиотеке superagent
(aliased as request
) в глобальном помощнике, например:
function httpStub() {
return {
withCredentials: () => {
return { end: () => {} };
}
};
};
beforeEach(function() {
global.sandbox = sinon.sandbox.create();
global.getStub = global.sandbox.stub(request, 'get', httpStub);
global.putStub = global.sandbox.stub(request, 'put', httpStub);
global.patchStub = global.sandbox.stub(request, 'patch', httpStub);
global.postStub = global.sandbox.stub(request, 'post', httpStub);
global.delStub = global.sandbox.stub(request, 'del', httpStub);
});
afterEach(function() {
global.sandbox.restore();
});
Но по какой-то причине, когда некоторые тесты встречаются, методы не затухают, поэтому я достигаю ошибки ECONNREFUSED
. Я проверил трижды, и нет, где я восстанавливаю песочницу или любые заглушки.
Есть ли способ исправить проблему, с которой я столкнулся, или более чистое решение для этого?