Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
Як протестувати routeHandler (api endpoint)?
#testing #package

Якщо вам не подобається писати типи, то доводиться писати тести. Сьогоднішній рецепт про них.

Route handler це функція, яка використовується обробки запитів, які надходять до сервера. У Nest.js це один із методів контролера з відповідними декораторами. У Express ця функція, яка приймає два параметри: об'єкт запиту (request) та об'єкт відповіді (response), та виконує необхідні дії для обробки запиту. Наприклад у цьому коді стрілочна функція є routeHandler-м:
app.get('/', (req, res) => {
res.send('hello world')
})

Способи тестування:
1️⃣ Unit testing, тобто без підняття http серверу. Так тестувати недоцільно, за винятком serverless functions. До функції передаються Req/Res моки. Щоб уникнути проблем з типізацією та прискорити створення моків, використовується node-mocks-http.
2️⃣ Integration Testing, тобто з підняттям http серверу у тестах. Ще може називатися White Box Integration Testing. Часто використовується supertest. Саме так найчастіше тестують Nest.js apps.
3️⃣ End to end testing, тобто з підняттям http серверу до запуску тестів або у global beforeAll. Ще може називатися Black Box Integration Testing, Contract testing, etc. Також може використовувати supertest, але краще використовувати newman чи просто axios.

Ще існує end to end user testing. У цих тестах перевіряється користувальницький досвід і їх пишуть QA automation.
👍25