Курс 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, коли простіше дозволити фреймворку порахувати.

Навігація курсом

Тест — Тестування   |   Запуск тестів


💪 Або перейдіть одразу до вправ цього розділу.