Перейти до основного вмісту

Бібліотеки для тестування

Бібліотеки для тестування — це спеціальні інструменти, що допомагають у процесі тестування. Звичайно можна написати власну бібліотеку запуску своїх тестів, але на даний час співтовариство вже виконало величезний обсяг роботи та розробило величезну кількість інструментів для тестування, тому простіше буде використовувати їх.

Технологічний стек для модульного тестування

stack

Runner, Reporter

Необхідні для виконання тестів. Модульний тест це звичайний JavaScript файл, але щоб скористатися доданими функціями виконавців тестів, наприклад запускати кілька тестів за раз, повідомляти про помилки або успішне завершення нам потрібний виконавець тестів. Ми будемо використовувати Jest, але є альтернативи Mocha та Jasmine або Ava.

SPY, Mock

При написанні тестів ми уникаємо їхнього зв'язування з іншими частинами інфраструктури нашої програми. Таким чином інші не тестовані функції повинні бути замінені «підробленою» функцією, яка веде себе так, як від неї очікують, та тут нам на допомогу прийдуть стаби (stubs) та моки (mock) Різниця в термінах у тому, що стаб нічого не перевіряє, а лише імітує заданий стан, а мок – це об'єкт, який має очікування. Наприклад, що тестована функція має бути викликана кілька разів. Для тестування stubs та mock ми використовуємо Jest, але є й інші бібліотеки Sinon та Testdouble.

Matchers

Бібліотеки для суджень на кшталт - a більше b?. Вже створено безліч рішень, які полегшують написання твердження для наших тестів. Jest поставляється зі вбудованими методами твердження. Альтернативні популярні рішення Chai та Shouldjs.

Coverage

Покриття тестами. Є способи визначення того, які частини нашої програми вкриті тестами. Це показник, який є орієнтиром при визначенні того, наскільки добре протестовано наш код. Jest використовує популярний інструмент під назвою Istanbul.

Висновок

На сьогоднішній день доступна ціла маса фреймворків для модульного тестування. Як бачимо бібліотека Jest покриє будь-яке завдання, яке може виникнути при тестуванні нашої програми.