В прошлый день я пытался создать свои тесты для проекта, над которым я работал. Все сообщения были излишними и совершенно бесполезными.
Я сделаю это ЯСНЫМ и ПРЯМО В СУТЬ. Никто не читает полные сообщения, кроме кода. Итак, давайте сделаем это кратко и быстро.
ШАГ 1
Установите JEST и Супертест.
npm i --save-dev jest supertest
ШАГ 2
Перейдите к вашему файлу package.json, а затем добавьте в «скрипты» следующий.
"scripts": { "start": "node src/server.js", "test": "jest --watch" }
ПРИМЕЧАНИЕ. Стартовый сценарий может отличаться, поскольку мой API находится в папке src/server.js. Хотел вставить код, чтобы было наглядно видно где и как :D!
ШАГ 3
Добавьте в package.json следующую строку кода.
"jest": { "testEnvironment": "node", "coveragePathIgnorePatterns": [ "/node_modules/" ] }
Примечание. Если вы не знаете, где находится элемент, просто убедитесь, что он находится внутри глобального {}, и добавьте запятую в конце предыдущего элемента.
ШАГ 4
Создайте папку с именем тесты. Если у вас есть значок VSCODE, вы увидите созданный красивый значок! Теперь внутри этой папки вы добавите все свои файлы тестов. Файлы тестов должны следовать этому шаблону.
Пример: server.test.js
JEST ЧИТАЕТ ВСЕ ВАШИ .test. файлы!
ШАГ 5
ВРЕМЯ ИСПЫТАТЬ!
Перед тестированием убедитесь, что ваш app.js или server.js, какое бы имя вы ему ни дали, экспортирует приложение в конце.
module.exports = app
ПРИМЕЧАНИЕ: помните, что экспресс-сервер создает приложение с помощью const app = express();
Наконец, давайте проведем простой тест внутри нашего server.test.js.
const request = require('supertest'); let app describe("Sample test",() => { beforeAll(async ()=>{ //Your route to the server might be different app = await require('../src/server'); }); it("return a 200 status when getting root route", async ()=>{ const res = await request(app) .get('/'); expect(res.status).toBe(200); }); });
Вот код моего корневого маршрута, если вы тоже хотите его использовать.
ЭТО ОНО! Вот результат.