Мне нужно издеваться над API REST, разработанным в NodeJS / Express. Я уже использую Jest и попробовал использовать Supertest / Nock для тестирования API. Насколько я понимаю, Supertest будет вызывать реальный API, а не просто издеваться над ним. Я не хочу, чтобы это создавало записи в БД и т. Д. c.
Я попытался использовать Nock, и мне кажется, что это то, что мне нужно, но проблема в том, что я ссылаюсь на объекты "req" и "res" в обработчике маршрута, который становится неопределенным при вызове одних только обработчиков во время тестирования .
Код: сервер. js
app.get("/api/user/:id/movies",testHander)
testHander. js
const axios = require("axios");
const testHander = async (req,res) =>{
let id = req.params.id;
const data = await axios.get(`http://backendServerURL/user/${id}/movies`)
return res.send(data);
}
testing.test. js
const nock = require("nock");
const testHander = require("../handler/testHander");
describe("Test Handler", () => {
it("should return user movies", () => {
const id = 1;
nock("http://someRandomURL")
.get(`/user/${id}/movies`)
.reply(200, { data: { movies: [{ name: "Avengers", year: "2019" }] } });
const response = await testHander();
expect(response.data).toBe("someExpectation")
});
});
Вопрос: Как мне проверить этот код, издеваясь над backendServerUrl?