В настоящее время я использую node-fetch
и nock
для экспресс-сервера, расположенного поверх углового проекта.
У меня есть следующее промежуточное программное обеспечение, которое выполняет вызов API:
export const middleware = async(response: any) => {
try {
const result = await fetch(url).then(res => res.json())
return response.status(200).json(result);
} catch(err) {
logger.error({eventId: 'get-content', err});
return response.status(500)
}
}
и мой тест выглядит следующим образом:
describe('API service', () => {
let response, scope;
beforeEach(() => {
response = {
status(s) { this.statusCode = s; return this; },
json(result) { this.res = result; return this; },
};
})
afterEach(() => {
nock.restore();
})
it('should return a 200 response from successful call api', (done) => {
scope = nock(url)
.get(/.*/)
.reply(200, {data: 'content'})
middleware(response).then(data => {
expect(response.status).toEqual(200);
expect(response.data).toEqual('content');
scope.isDone();
done();
})
})
})
Однако nock не высмеивает ответ data
от функции промежуточного программного обеспечения.Вместо этого я должен был бы использовать scope
для доступа к его параметрам.
Функция промежуточного программного обеспечения действует так, как будто nock никогда не высмеивал свой ответ.Почему это происходит? Я пропустил конфигурацию?
Я выполняю свои тесты, используя бегун кармы.