2012-09-08 3 views
4

Je veux tester une page avec un formulaire qui, une fois soumis, redirigera vers la page résultante pour l'article soumis.Comment tester une redirection dans Mojolicious?

Mon contrôleur Mojolicious contient:

sub submit_new { 
    my $self = shift; 

    my $new = $self->db->resultset('Item')->new({ 
     title  => $self->param('title'), 
     description => $self->param('description'), 
    }); 
    $new->insert; 

    # show the newly submitted item 
    my $id = $new->id; 
    $self->redirect_to("/items/$id"); 
} 

Le script de test pour ce contrôleur contient:

use Test::More; 
use Test::Mojo; 

my $t = Test::Mojo->new('MyApp'); 

my $tx = $t->ua->build_form_tx('/items/new/submit' => $data); 
$tx->req->method('POST'); 
$t->tx($t->ua->start($tx)) 
    ->status_is(302); 

Mon problème est qu'il arrête avec le statut 302. Comment puis-je procéder à la redirection pour pouvoir vérifier la page de l'article qui en résulte?

Répondre

7

Réglez le paramètre de correspondance de Mojo de UserAgent:

$t->ua->max_redirects(10) 

En outre, vous n'avez pas besoin de construire le poste de forme manuellement:

$t->post_form_ok('/items/new/submit' => $data)->status_is(...); 


Référence:

+0

* post_form_ok * ne semble pas exister plus - ou vient la syntaxe changé? – lanti

+2

En effet; post_form a déjà existé dans Mojo :: UserAgent. Ils ont été fusionnés en post, donc la nouvelle utilisation serait: $ t-> post_ok ($ url => form => $ data); – tempire

Questions connexes