6

送信すると、送信されたアイテムの結果のページにリダイレクトされるフォームを使用してページをテストしたいと思います。

私の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私の問題は、ステータスで停止することです。結果のアイテムページを確認できるようにリダイレクトを続行するにはどうすればよいですか?

4

2 に答える 2

9

Mojo :: UserAgentから一致する設定を設定します:

$t->ua->max_redirects(10)

また、フォーム投稿を手動で作成する必要はありません。

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


参照:

于 2012-09-08T06:18:30.937 に答える
1

また、成功したログインがリダイレクトされたランディングページのコンテンツをテストすることもできます(おそらくそうすべきです):

my $tm = '' ; # the test message for each test
my $t = Test::Mojo->new('Qto');
$t->ua->max_redirects(10);
my $app = 'foobar';
my $url = '/' . $db_name . '/login' ;

 $tm = "a successfull result redirects to the home page";
 my $tx = $t->ua->post( $url => 'form'  => {'email' =>'test.user@gmail.com', 'pass' => 'secret'});
 ok ( $tx->result->dom->all_text =~ "$app home" , $tm );

mojodomでコンテンツを取得する方法のドキュメント

mojodomセレクタ構文のドキュメントリンク

ログインテストを使用したテストスクリプトの例

于 2019-07-09T10:50:48.950 に答える