Курс по 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, когато е по-лесно да оставите рамката да брои.

Навигация в курса

Тест — Тестване   |   Стартиране на тестове


💪 Или преминете направо към упражненията в този раздел.