[Catalyst] Testing View
Jonathan Rockway
jon at jrock.us
Sun Apr 20 06:09:27 BST 2008
* On Sat, Apr 19 2008, Yao Wang wrote:
> 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
> ?
If you want to do what you described in your previous message, you need
to take a different approach.
I recommend something like this:
use Catalyst::Test 'MyApp';
my $template;
my $old_process = \&YourApp::View::Whatever::process;
*YourApp::View::Whatever::process = sub {
my ($self, $c, @args) = @_;
$template = $c->stash->{template};
$self->$old_process($c, @args);
}
request('foo');
is $template, 'the_template_for_foo.tt';
You really want to keep this kind of testing to a minimum. The Catalyst
part of your application should be simple enough to not require
intensive testing.
Test::WWW::Mechanize::Catalyst (and friends) is mostly good for a quick
sanity check. The important parts of your application should reside in
easily-testable classes, and Catalyst should just be a few lines of code
to make the those classes available to web users.
Regards,
Jonathan Rockway
--
print just => another => perl => hacker => if $,=$"
More information about the Catalyst
mailing list