2012-09-08 58 views
4

我想用一個表單測試頁面,當提交時,它將重定向到提交項目的結果頁面。如何測試Mojolicious中的重定向?

我Mojolicious控制器包含:

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"); 
} 

此控制器的測試腳本包含:

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); 

我的問題是,它與302狀態停止。如何繼續重定向,以便我可以驗證生成的項目頁面?

回答

7

將匹配來自魔:: UserAgent的設置:

$t->ua->max_redirects(10) 

而且,你不需要手動生成表單提交:

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


參考:

+0

* post_form_ok *似乎不存在了 - 或者剛剛語法變化? – lanti

+2

確實; post_form也用於存在於Mojo :: UserAgent中。他們已被合併到後,所以新的用法將是:$ t-> post_ok($ url => form => $ data); – tempire