32. package MR::Go::Admin::UserFactory;
use base qw(DBIx::Class::Factory);
__PACKAGE__->resultset(MR::Go::Admin:: Schema->resultset('User'));
__PACKAGE__->fields({
name => __PACKAGE__->seq(sub {'User #' . shift}),
city => __PACKAGE__->related_factory('MR::Go::Admin::CityFactory'),
status => 'new',
});
DBIx::Class::Factory
33. package MR::Go::Admin::UserFactory;
use base qw(DBIx::Class::Factory);
__PACKAGE__->resultset(MR::Go::Admin:: Schema->resultset('User'));
__PACKAGE__->fields({
name => __PACKAGE__->seq(sub {'User #' . shift}),
city => __PACKAGE__->related_factory('MR::Go::Admin::CityFactory'),
status => 'new',
});
https://goo.gl/tBIRwZ
DBIx::Class::Factory
34. Фабрика в деле
sub set_status : Test(1)
{
my ($self) = @_;
my $task = MR::Admin::Go::Test::Factory::Task->create();
$task->set_status('TEST_NEW_STATUS');
is($task->status, 'TEST_NEW_STATUS', 'status');
return;
}
44. Моки с магией
my $mock = Test::MockModule->new('MR::Go::Admin::SMS');
my $sent = 0;
$mock->mock(_send => sub { $sent = 1 });
45. Моки с магией
local *MR::Go::Admin::SMS::_send = sub { $sent++ };
my $mock = Test::MockModule->new('MR::Go::Admin::SMS');
my $sent = 0;
$mock->mock(_send => sub { $sent = 1 });
46. Моки без магии
package MR::Go::Admin::User::Test::_FakeUser;
MR::Go::Admin::User::Test::_FakeUser->new();
bless $user, 'MR::Go::Admin::User::Test::_FakeUser';
47. Моки без магии
has _logger => (default => sub { '...' });
User->new({_logger => $fake_logger});
User->new({_message_size_limit => 42});
package MR::Go::Admin::User::Test::_FakeUser;
MR::Go::Admin::User::Test::_FakeUser->new();
bless $user, 'MR::Go::Admin::User::Test::_FakeUser';