Я пытаюсь использовать nock для перехвата вызова из моего приложения на inte rnet.
Цель здесь - избежать использования переменного внешнего API при тестировании.
Что Я делаю это:
describe('My awesome test', () => {
beforeEach(() => {
let scope = nock('http://www.myexternalapi.eu')
.log(console.log)
.post('/my/awesome/path')
.query(true)
.reply(200, response);
console.error('active mocks: %j', scope.activeMocks())
});
it('Should try to call my API but return always the same stuff ', () =>{
myService.doStuffWithAHttpRequest('value', (success) => {
// The answer must always be the same !
console.log(success);
});
})
// Other tests...
}
и myService.doStuffWithAHttpRequest ('value', (success) выглядит примерно так:
const body = "mybodyvalues";
const options = {
hostname: 'myexternalapi.eu',
path: '/my/awesome/path',
method: 'POST',
headers: {
'Content-Type': 'application/xml'
}
};
const request = http.request(options, (response) => {
let body = "";
response.setEncoding('utf8');
response.on('data', data => {
body += data;
});
response.on('end', () => {
parser.parseString(body, (error, result) => {
// Do a lot of cool stuff
onSuccess(aVarFromAllTheCoolStuff);
});
});
});
При запуске моих тестов nock отображает это:
active mocks: ["POST http://www.myexternalapi.eu:80/my/awesome/path/"]
Кажется, хорошо! Но мой запрос не совпадает, и внешний API всегда вызывается!
Я пробовал:
beforeEach(() => {
let scope = nock('http://www.myexternalapi.eu/my/awesome/path')
.log(console.log)
.post('/')
.query(true)
.reply(200, response);
console.error('active mocks: %j', scope.activeMocks())
});
Это тоже не работает.
beforeEach(() => {
let scope = nock('myexternalapi.eu')
.log(console.log)
.post('/my/awesome/path')
.query(true)
.reply(200, response);
console.error('active mocks: %j', scope.activeMocks())
});
Это тоже не работает и отображает странный URL:
active mocks: ["POST null//null:443myexternalapi.eu:80/my/awesome/path/"]
Плюс что-то странное:
Nock can log matches if you pass in a log function like this:
.log(console.log)
Не отображать ничего .. .?! Есть идеи?
Спасибо, я схожу с ума от этого ...