[Moscow.pm] Научите писать красивые тесты

Гришаев Анатолий agrishaev на gmail.com
Чт Июн 30 10:21:33 PDT 2016


Не совсем эквивалентно теряется информация о строке в которой определен тест

Можно твой вариант улучшить чуть-чуть

вместо
.............
sub test_case {
  my ($want_result,  $input) = @_;

  my $r = my_func($input)
  ok($r)
  is($r->string, $want_result, "parse $input")
}
..........................

Лучше писать
////////////////////

sub test_case {
  my ($want_result,  $input) = @_;
+my $tb = Test::Builder->new;
  my $r = my_func($input)
  $tb->ok($r)
  -is($r->string, $want_result, "parse $input")
  +$tb->is_eq($r->string, $want_result, "parse $input");
}
/////////////////////

Я от подобного варианта ушел, не смог заставить писать в таком стиле, из-за
собственных требований к красоте.



30 июня 2016 г., 19:53 пользователь Victor Efimov <victor на vsespb.ru>
написал:

> или
> я переодически делаю вместо
> ===
> my ($want_result,  $input) = ( "вход 1", "выход 1")
>
> my $r = my_func($input)
> ok($r)
> is($r->string, $want_result, "parse $input")
> ===
>
> так:
>
> ===
> sub test_case {
>   my ($want_result,  $input) = @_;
>
>   my $r = my_func($input)
>   ok($r)
>   is($r->string, $want_result, "parse $input")
> }
>
> test_case( "вход 1", "выход 1");
> test_case( "вход 2", "выход 2");
> test_case( "вход 3", "выход 3");
> test_case( "вход 4", "выход 4");
> ===
>
> что-то в общем-то эквивалентно готовому хэшу с вход-выход
>
> 30 июня 2016 г., 19:46 пользователь Akzhan Abdulin
> <akzhan.abdulin на gmail.com> написал:
> > оно?
> >
> >
> https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t
> >
> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий <
> agrishaev на gmail.com>
> > написал:
> >>
> >> Добрый день Moscow PM!
> >>
> >>
> >> Пишу тесты для сложной функции-монстра
> >>
> >> На вход принимает строку  и на выход "почти" строку.
> >>
> >>
> >> Сейчас тесты выглядят так
> >> ////////////////////////////
> >> my ($want_result,  $input) = ( "вход 1", "выход 1")
> >>
> >> my $r = my_func($input)
> >> ok($r)
> >> is($r->string, $want_result, "parse $input")
> >>
> >> my ($want_result,  $input) = ( "вход 2", "выход 2")
> >>
> >> my $r = my_func($input)
> >> ok($r)
> >> is($r->string, $want_result, "parse $input")
> >> //////////////////////////
> >>
> >> Получается куча повторяющего кода, в котором теряется суть
> >>
> >> Можно ли этого избежать и писать более красиво?
> >>
> >>
> >>
> >>
> >>
> >> --
> >> Moscow.pm mailing list
> >> moscow-pm на pm.org | http://moscow.pm.org
> >>
> >
> >
> > --
> > Moscow.pm mailing list
> > moscow-pm на pm.org | http://moscow.pm.org
> >
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20160630/949cd40f/attachment.html>


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