Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni
🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!26.05.2023
Capybara - найкращий інструмент для інтеграційних тестів
Люблю фреймворк інтеграційних тестів Capybara. Дванадцять років тому я робив презентацію про те, яка вона класна. Та, за цей час, вона стала тільки краще. Хоча що дійсно стало краще, то можливості емуляції браузера, через що “само-багів” в тестах значно поменшало.
В чому перевага Капібари? Я бачу дві.
-
Синтаксис Ruby найкраще підходить для створення DSL, а рубішний підхід до асинхронності не ускладнює код конструкціями на кшталт
then
,await
, оголошеннями функцій, типами та так далі. При цьому тести залишаються справжнім кодом, та його можна рефакторити, міксувати з кодом, що не стосується інтеграційних тестів, та інше. -
Останній пункт дуже важливий. Бо в тестах Capybara ми маємо повний доступ до контексту додатка. Наприклад, ми можемо наповнити базу тестовими даними, використовуючи ті самі фабрики, що і юніт-тести. (До речі, фабрики на Ruby теж незрівнянні, але зараз не про них.) Але ми також можемо безпосередньо впливати на код додатка — наприклад, замокати метод, щоб відтворити необхідну ситуацію.
Звісно, що найкраще Capybara працює з додатком на Ruby on Rails. (Проте це не є обовʼязковим, капібарою можна тестувати будь-що.) Можна сказати, що це обмежує її потенціал, але обмеження — це те, що очікує всіх, хто не обрав Rails. :)
Чого справді не вистачає в Capybara - це такого журналу виконання, який є в Cypress або Playwright. Дивно що хтось його ще не зробив.