Курс Raku / Розширені / Тестування та документація 🆕 / Тестування 🆕
Порівняння та плани
Окрім ok та is, модуль Test
має порівняння для різних видів значень. Найкорисніші такі:
is— порівнює два значення на рівність (як рядки чи числа)is-deeply— порівнює дві структури даних на точну рівність з урахуванням типівlike— перевіряє, що рядок збігається з регулярним виразомisnt— проходить, коли два значення не рівні
is-deeply є правильним вибором для масивів, хешів і
вкладених даних, бо він точно порівнює структуру й тип:
use Test;
my @reversed = (1, 2, 3).reverse;
is-deeply @reversed, [3, 2, 1], 'reversed';
done-testing;Це виводить:
ok 1 - reversed
1..1Там, де is перетворив би на рядки й порівняв нестрого,
is-deeply наполягає, щоб структури справді збігалися.
Зверніть увагу, що done-testing ставить план
1..1 наприкінці, після перевірки.
Замість того щоб дозволити done-testing порахувати тести
за вас, ви можете заздалегідь оголосити їхню кількість через
plan. Це захищає від файлу тестів, який завершується
передчасно й мовчки пропускає перевірки:
use Test;
plan 2;
ok True, 'first';
ok 1 < 2, 'second';Цього разу план іде першим, попереду результатів:
1..2
ok 1 - first
ok 2 - secondЦе і є видима відмінність від done-testing:
plan виводить кількість 1..2 угорі, ще до
виконання будь-яких перевірок, тоді як done-testing
виводить її в самому кінці. Так чи так, із plan 2 запуск
очікує рівно двох тестів; якщо їх насправді виконається менше (або
більше), набір буде визнано невдалим. Використовуйте plan,
коли кількість стала й відома, і done-testing, коли
простіше дозволити фреймворку порахувати.
Навігація курсом
← Тест — Тестування | Запуск тестів →
💪 Або перейдіть одразу до вправ цього розділу.