[Dancer-users] Question regarding Dancer::Test

Sarah Fuller sarah at averna.id.au
Sun Aug 5 16:00:50 CEST 2012


perl -Ilib t/002_index_route.t
1..2
ok 1 - a route handler is defined for /
ok 2 - response status is 200 for /


So turns out having "use Dancer ':moose';" seems to be the trigger. Remove
that and the problem goes away. From what I understand this simply stops
the export "after" and "before". Guess we need em? Obviously I've
overlooked something here..


Complete file:

package MyApp;

use Dancer ':moose';
our $VERSION = '0.1';

get '/' => sub
{
    template 'index', { page => 'index' };
};

true;

Result:

perl -Ilib t/002_index_route.t
1..2
ok 1 - a route handler is defined for /
not ok 2 - response status is 200 for /
#   Failed test 'response status is 200 for /'
#   at t/002_index_route.t line 11.
#          got: '500'
#     expected: '200'
# Looks like you failed 1 test of 2.


Change "Dancer ':moose';" to "use Dancer ':syntax';" and you'll get:

perl -Ilib t/002_index_route.t
1..2
ok 1 - a route handler is defined for /
ok 2 - response status is 200 for /


In fact changing the code in "Dancer::Test" from "use Dancer ':syntax',
':tests';" to "use Dancer ':moose', ':tests';" and then run the tests on a
freshly generated dancer app and I get the same error.

So I've started looking into the internals of dancer to try and work out
what's going on, at the very least I might learn something. However by all
means, don't hold back telling me what on earth am I doing wrong. :)



On Sun, Aug 5, 2012 at 2:51 AM, Sarah Fuller <sarah at averna.id.au> wrote:

> Hello Dancers! :)
>
> Firstly please forgive me for bothering all of you with my silly little
> issues. However I've been using dancer for a number of projects for awhile
> now (loving it!) and haven't come across this before. Perhaps its just the
> lack of sleep but I've not been able to work out what's going on. I don't
> expect a magic bullet but if someone out there has some suggestions that
> might point me in the right direction I'd be most grateful.
>
> The problem: I've been using Dancer::Test and testing the app as I go.
> Somehow have managed to get it into a state whereby testing any route that
> returns a template with say "response_status_is" returns 500. Thing is, the
> routes are working and returning 200. They work in the browser and they
> work when I check them with curl. All routes returning a serializer or
> indeed just doing a "return;" work fine too. I've included some example
> information below, happy to share any other details that may help me sort
> this out.
>
> I'm sure I've just overlooked something....
>
> Thank you.
>
> Sarah Fuller
>
>
> ROUTE:
>
> get '/' => sub
> {
> =pod
>     main page
> =cut
>
>     template 'index';
> };
>
> ---
>
> TEST FILE:
>
> use Test::More tests => 2;
>
> use warnings;
> use strict;
>
> # the order is important
> use MyApp;
> use Dancer::Test;
>
> route_exists [GET => '/'], 'a route handler is defined for /';
> response_status_is ['GET' => '/'], 200, 'response status is 200 for /';
>
> ---
>
> TEST RESULT:
>
> perl -Ilib t/002_index_route.t
> 1..2
> ok 1 - a route handler is defined for /
> not ok 2 - response status is 200 for /
> #   Failed test 'response status is 200 for /'
> #   at t/002_index_route.t line 11.
> #          got: '500'
> #     expected: '200'
> # Looks like you failed 1 test of 2.
>
> ---
>
> MANUAL TEST:
>
> curl -I http://localhost:3000/
> HTTP/1.0 200 OK
> Server: Perl Dancer 1.3098
> Content-Length: 9093
> Content-Type: text/html; charset=utf-8
> Set-Cookie: dancer.session=768955642575256601817434832617820228; path=/;
> expires=Sun, 05-Aug-2012 00:33:47 GMT; HttpOnly
> X-Powered-By: Perl Dancer 1.3098
>
> ---
>
> CONFIG FILE:
>
> appname: "app"
> layout: "main"
> charset: "UTF-8"
> serializer: "JSON"
>
> session: Storable
> session_dir: /tmp/dancer_app
> session_expires: 28800
>
> template: "template_toolkit"
>
> engines:
>   template_toolkit:
>     encoding:  'utf8'
>     start_tag: '[%'
>     end_tag:   '%]'
>
> plugins:
>   ValidateTiny:
>     rules_dir: validation
>     error_prefix: err_
>     is_full: 0
>
>   Passphrase:
>     default: bcrypt
>     bcrypt:
>       cost: 12
>
>   DBIC:
>    default:
>      schema_class: MyApp::Schema
>      dsn:  dbi:mysql:MyApp
>      user: user
>      pass: pass
>      options:
>        RaiseError: 1
>        PrintError: 1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.backup-manager.org/pipermail/dancer-users/attachments/20120806/27f57b0c/attachment.htm>


More information about the Dancer-users mailing list