Кажется, есть много разных способов сделать это, но я пытаюсь использовать только модули sinon, sinon-test, chai / mocha, axios, httpmock. Я не могу успешно смоделировать вызов GET, сделанный с помощью axios. Я хочу, чтобы можно было смоделировать ответ от этого вызова axios, чтобы модульному тесту фактически не приходилось делать запрос внешнего API.
Я попытался настроить базовый модульный тест, создав песочницу и используя заглушку sinon, чтобы установить вызов GET и указать ожидаемый ответ. Я незнаком с JavaScript и NodeJS.
// Main class (filename: info.js)
function GetInfo(req, res) {
axios.get(<url>).then(z => res.send(z.data));
}
// Test class (filename: info.test.js)
it ("should return info", () => {
const expectedResponse = "hello!";
const res = sinon.spy();
const aStub = sinon.stub(axios, "get").resolves(Promise.resolve(expectedResponse));
const req = httpMock.createRequest({method:"get", url:"/GetInfo"});
info.GetInfo(req, res);
// At this point, I need to evaluate the response received (which should be expectedResponse)
assert(res.data, expectedResponse); // data is undefined, res.status is also undefined
// How do I read the response received?
});
Мне нужно знать, как прочитать ответ, который должен быть отправлен обратно (если он захватывается в первую очередь sinon).