Як протестувати routeHandler (api endpoint)?
#testing #package
Якщо вам не подобається писати типи, то доводиться писати тести. Сьогоднішній рецепт про них.
Route handler це функція, яка використовується обробки запитів, які надходять до сервера. У Nest.js це один із методів контролера з відповідними декораторами. У Express ця функція, яка приймає два параметри: об'єкт запиту (request) та об'єкт відповіді (response), та виконує необхідні дії для обробки запиту. Наприклад у цьому коді стрілочна функція є routeHandler-м:
Способи тестування:
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.
#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