а зачем, кстати, $tb ?
30 июня 2016 г., 20:59 пользователь Гришаев Анатолий <[email protected]> написал: > Спасибо Акжан и Виктор за ваши варианты. > > Вообщем использовал обе идеи и добавил, что-то от себя. > 1) использовал именованные параметры для ясности > 2) Завернул в функцию > 3) Используем номера строк для нахождения failing case > > Получилось в итоге. > ========================= > test_case( > input => "input 1", > output => "result 1", > ); > ... > test_case( > input => "input 2", > output => "result 2", > ); > > sub test_case{ > my $tb = Test::Builder->new; > ... > $tb->is_eq( ... ); > }; > ========================= > > > 30 июня 2016 г., 20:21 пользователь Гришаев Анатолий <[email protected]> > написал: > >> Не совсем эквивалентно теряется информация о строке в которой определен >> тест >> >> Можно твой вариант улучшить чуть-чуть >> >> вместо >> ............. >> 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 <[email protected]> >> написал: >> >>> или >>> я переодически делаю вместо >>> === >>> 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 >>> <[email protected]> написал: >>> > оно? >>> > >>> > >>> > https://github.com/plack/Plack/blob/master/t/Plack-Middleware/lint_wrong_header_info.t >>> > >>> > 30 июня 2016 г., 19:25 пользователь Гришаев Анатолий >>> > <[email protected]> >>> > написал: >>> >> >>> >> Добрый день 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 >>> >> [email protected] | http://moscow.pm.org >>> >> >>> > >>> > >>> > -- >>> > Moscow.pm mailing list >>> > [email protected] | http://moscow.pm.org >>> > >>> -- >>> Moscow.pm mailing list >>> [email protected] | http://moscow.pm.org >> >> > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
