3

リダイレクトと URL パラメーターをチェックする小さなテストを作成しました。不思議なことに、エラー メッセージは結果が実際には正しいことを示しているように見えますが、テストは失敗します。

Failure/Error: response.should redirect_to(movies_path(:sort => 'title'))

Expected response to be a redirect to 
<http://test.host/movies?sort=title> 
but was a redirect to 
<http://test.host/movies?ratings%5BG%5D=G&ratings%5BNC-17%5D=NC-17&ratings%5BPG%5D=PG&ratings%5BPG-13%5D=PG-13&ratings%5BR%5D=R&sort=title>

URL は (本来あるべき姿で) 同一であり、予期されるパラメーター 'sort=title' が実際の結果のパラメーターに含まれています。これは妥当な状況だと思います...

http://api.rubyonrails.org/classes/ActionDispatch/Assertions/ResponseAssertions.html#method-i-assert_redirected_toによると、「この一致は部分的であり、assert_redirected_to(controller: "weblog") もリダイレクトに一致するredirect_to(controller: "weblog", action: "show") など。"

解決策:選択した回答の提案を機能させることができませんでしたが、上記のリンクの「部分的な」一致が誤解を招く可能性があり、コードが期待どおりに機能しなかったことを説明するのに役立ちました。そこで、Hash受け取ったすべてのパラメーターを使用して を作成し、それらを「should redirect_to」テストに追加しました。

response.should redirect_to(movies_path(:sort => 'title', :ratings => rest))

「残り」はそのハッシュです。

4

2 に答える 2