Я пытаюсь выполнить модульное тестирование для простой функции, которая отправляет запрос get, получает ответ, а затем возвращает объект обещания с сообщением об успехе или ошибке.Ниже приводится функция:
module.exports.hello = async (event, context) => {
return new Promise((resolve, reject) => {
fetch("https://httpstat.us/429", { headers: { 'Content-Type': 'application/json' } }).then(response => {
console.log(response);
if (response.status == 200) {
return response;
} else {
throw Error(response.status + ": " + response.statusText);
}
}).then(tokenData => {
resolve({ status: 200, body: JSON.stringify({ statusText: 'Success' }) });
}).catch(error => {
reject(error.message);
});
});
};
Во время модульного тестирования я использую fetch-mock, чтобы смоделировать вызов API и получить пользовательский ответ.Ниже приведен код:
it('hello returns failure message', (done) => {
fetchMock.get('*', {
status: 429,
statusText: "Too Many Nothings",
headers: { 'Content-type': 'application/json' }
});
edx.hello(null, null).catch(error => {
expect(error).to.equal('429: Too Many Requests');
}).then(() => {
done();
}).catch(error => {
done(error);
});
});
Но этот код не издевается над запросом на выборку, поскольку, когда я печатаю текст ответа, это «Слишком много запросов», которое отправляется в качестве ответа API, а не «Слишком много пустяков », над которыми издеваются.Я новичок в NodeJS.Пожалуйста, скажите мне, что я делаю не так.