[Moscow.pm] Объектно-ориентированный интерфейс для тестов/ассертов (was: Test::)

Konstantin S. Uvarin khedin на gmail.com
Вт Янв 10 02:43:32 PST 2017


Приветствую!

  Прошу прощения за кривой сабж.

2017-01-10 0:41 GMT+02:00 Konstantin S. Uvarin <khedin на gmail.com>:

> Приветствую!
>
>   На Новый год Дед мороз подарил мне большую коробку кодинга, так что я
> запилил ещё один модуль, о котором давно мечтал. Суть такова:
>
> # ... somewhere in production code
> use Test::Refute::Contract;
>
> my $c = Test::Refute::Contract->new;
> $c->is( $foo, $bar, "vars match" );
> $c->like( $user_input, qr/f?o?r?m?a?t?/;
>
> if ($c->get_pass) {
>     # proceed...
> } else {
>     # no go
>     warn $c->get_tap; # ok 1 - foo\nnot ok 2 - bar\n1..2
> };
>
> ​  Сами проверки совпадают с таковыми в Test::More, плюс можно добавлять
> свои и/или расширять сам класс контракта. ​
>
> ​Также имеется конструкция
>
> $c->refute( $what_went_wrong, $human_explanation);
>
>  - которая, собственно, и используется для расширения. assert, вывернутый
> наизнанку: если первый аргумент false (null в случае плюсов/джавы) -
> считаем, что всё working as expected; если же там пришло что-то - то громко
> жалуемся, сообщая и объяснение, и причину провала.
>
>   Выглядит немножко контр-интуитивно, но ​если освоить именно такую форму,
> на нормальный assert без слёз уже смотреть не получается.
>
>   Ннннадо кому?
>
>   https://github.com/dallaylaen/perl-test-refute
>
> --
> Konstantin S. Uvarin
> jabber: see <from>
> skype: kuvarin
> http://github.com/dallaylaen
>



-- 
Konstantin S. Uvarin
jabber: see <from>
skype: kuvarin
http://github.com/dallaylaen
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20170110/45d103be/attachment.html>


Подробная информация о списке рассылки Moscow-pm