В прошлый день я пытался создать свои тесты для проекта, над которым я работал. Все сообщения были излишними и совершенно бесполезными.

Я сделаю это ЯСНЫМ и ПРЯМО В СУТЬ. Никто не читает полные сообщения, кроме кода. Итак, давайте сделаем это кратко и быстро.

ШАГ 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);
  });
});

Вот код моего корневого маршрута, если вы тоже хотите его использовать.

ЭТО ОНО! Вот результат.