Курс языка программирования 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 — когда проще позволить фреймворку
подсчитать.
Навигация по курсу
← Тест — Тестирование | Запуск тестов →
💪 Или перейдите сразу к упражнениям этого
раздела.