Hi,

Thanks Matt. Now i know i have used wrong way to call a method in the 
controller.

However ,the reason i use $c->prepare is for unit testing. I have seen  
Catalyst::Test and Test::WWW::Mechanize::Catalyst, i think they are the testing 
tools for application, not for unit testing. When i do the unit testing, i need 
to pass $c and some other params to the methods.
So can anybody tell me how to create this kind of $c for testing only ?

Thanks,
Yao


-----Original Message-----
From: Matt S Trout <[EMAIL PROTECTED]>
To: The elegant MVC web framework <[email protected]>
Date: Fri, 18 Apr 2008 20:11:22 +0100
Subject: Re: [Catalyst] Testing View

On Thu, Apr 17, 2008 at 02:56:49PM +1000, Yao Wang wrote:
> Dear Friends,
> 
> I have just started working on a project using Catalyst. I am trying my hand 
> at testing and got the following issue :(
> 
> I have created the following test file:
> 
> my $c = MyApp -> prepare();
> 
> MyApp::Controller::MyController::MyAction(undef, $c);
> 
> ok($c->stash->{template} eq $expected_template_name, "comparing template 
> returned");
> 
> Now, all seemed to work fine till i realized that its better to explicitly
> forward $c to MyApp::View::TT rather than doing in the end method. But after 
> adding this line to my controller action i got this error:
> 
> "Modification of non-creatable array value attempted, subscript -1 at
> /usr/lib/perl5/vendor_perl/5.8.8/Catalyst/Dispatcher.pm line 186."
> 
> I guess this is happening because $c->stash->template does not exist anymore?
> 
> Any way to get around this problem.

use Catalyst::Test 'MyApp';
use Test::WWW::Mechanize::Catalyst 'MyApp';

You can't just call ->prepare with no engine, bypass the entire dispatch
setup and then expect the dispatcher to work.

Also, a controller is an object. Calling methods as subroutines is
-just- -wrong-.

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/

_______________________________________________
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