server. js - это простой express. js файл, использующий токены jwt. В настоящее время я хочу протестировать простой маршрут, который будет возвращать только строку «Hello World», как показано ниже
app.get("/", (req, res) => {
res.send("Hello World");
});
Приведенный ниже код представляет собой файл jest, который использует supertest для отправки запроса вместе с действительным jwt token
const supertest = require("supertest");
let server, request;
const serverStart = new Promise(resolve => {
server = require("../server.js");
request = supertest(server);
server.on("app_started", () => {
resolve();
});
});
beforeAll(async () => {
await serverStart;
});
afterAll(() => {
server.close();
});
describe("When testing the server.js", () => {
it("Should connect successfully and be able to return a response", async () => {
const response = await request
.get("/")
.set("Authorization", `bearer ${process.env.AUTHTOKEN}`);
expect(response.text).toBe("Hello World");
console.log(response.text);
});
});
Когда этот шут (по истечении 5 секунд) говорит, что Timeout - Async callback was not invoked within the 5000ms timeout specified
, однако, console.log, который я добавил после того, как ожидаемая функция выводит на консоль «Hello World», означает запрос сделан и возвращает значение, но он продолжает код, но просто пропускает функцию ожидаемого
Я также пытался сделать это с done()
, а также с использованием then()
, но получил ту же ошибку раз, и я консоль записал время до и после вызова и обнаружил, что для возврата значения требуется всего несколько миллисекунд, так почему же ожидание не завершает тест?