Trevor,

Thanks for the tip, I ended up overriding the model method. Works like a
charm ;)

-- Frank

“Don’t worry if it doesn’t work right. If everything did, you’d be out of a
job.”  (Mosher’s Law of Software Engineering)


On Fri, Apr 29, 2011 at 3:14 PM, Trevor Leffler <[email protected]> wrote:

> Hi Frank,
>
> Have you mocked $c->model so that you get your mock, $pin_attempt_mock,
> when you call $c->model('Foo') ?
>
> You can either create a MockObject for $c, or you can locally override $c's
> model method.  I tend to do the former.
>
> --Trevor
>
>
>
> Franklin Kumro Jr wrote:
>
>> Hello,
>>
>> I have a model (MyApp/Models/Bar.pm) which retrieves data from the db
>> using the generated schema files (in MyApp/Schema/Result/*.pm).
>>
>> My plan is to mock the classes which are called when retrieving data from
>> the database.
>>
>> BEGIN {
>>      my $resultset_mock = Test::MockObject->new();
>>      $resultset_mock->fake_module('DBIx::Class::ResultSet' => ( 'count' =>
>> sub { 0 } ));
>>
>>      my $pin_attempt_mock = Test::MockObject->new();
>>      $pin_attempt_mock->fake_module('MyApp::Schema::Result::Foo' =>
>> ('search' => sub { bless $resultset_mock, 'DBIx::Class::ResultSet' }));
>> }
>>
>>
>> BEGIN { use_ok 'MyApp::Model::Bar' }
>>
>> is (MyApp::Model::Bar->_get_failed_challenges('test', 'test'),
>>    0,
>>    'get failed challenges'
>>    );
>>
>> MyApp::Model::Bar->_get_failed_challenges contains calls to search and
>> count (shown below)
>>
>> my $result = $c->model('Foo')->search({...});
>> $result->count();
>>
>> If I call MyApp::Schema::Result::Foo->search()->count() the mock returns 0
>> (and other values that I tested). However when I attempt to use test the Bar
>> model the following error is returned.
>>
>> "You must pass a package name and it cannot be blessed at
>> /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/Class/MOP/Class.pm
>> line 41"
>>
>> Also if I follow the stack trace down into the MyApp files, it points to
>> the line in MyApp::Model::Bar->_get_failed_challenges which calls search.
>>
>> Any help would be appreciated!
>>
>> Thanks,
>>
>> -- Frank
>>
>
>
> _______________________________________________
> List: [email protected]
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
>
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to