[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