Курс по 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, когато е по-лесно да
оставите рамката да брои.
Навигация в курса
← Тест — Тестване | Стартиране на тестове →
💪 Или преминете направо към упражненията в този
раздел.