如何在Mojolicious中测试重定向?

ste*_*enl 6 perl unit-testing 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");
}
Run Code Online (Sandbox Code Playgroud)

该控制器的测试脚本包含:

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);
Run Code Online (Sandbox Code Playgroud)

我的问题是它停止了302状态.如何继续重定向,以便我可以验证生成的项目页面?

tem*_*ire 9

从Mojo :: UserAgent设置匹配设置:

$t->ua->max_redirects(10)
Run Code Online (Sandbox Code Playgroud)

此外,您不需要手动构建表单帖子:

$t->post_form_ok('/items/new/submit' => $data)->status_is(...);
Run Code Online (Sandbox Code Playgroud)


参考:

  • 确实; post_form过去也存在于Mojo :: UserAgent中.它们已被合并到帖子中,因此新用法将是:$ t-> post_ok($ url => form => $ data); (3认同)