8

webrat を使用して Rails アプリケーションの統合テストを作成しています。フォームに入力した後、ユーザーが送信を押すと、アカウントが作成されます。

click_button "Submit"
assert_contain "Your Account Has Been Created"

ただし、テストは失敗します。

expected the following element's content to include "Your Account Has Been Created":
You are being redirected.
<false> is not true.

通常、リダイレクトをたどるには post_via_redirect を使用しますが、Webrat の例を見るだけで、click_button に続いて assert_contain が機能するはずです

私はWebratを使い始めたばかりなので、ここで何か明らかなことを見逃していますか? リダイレクト応答でスタックするのはなぜですか?

ありがとう!

デブ

4

4 に答える 4

11

新しいRails 3アプリでは、コントローラーにredirect_to呼び出しを含む単純なメソッドをテストするときにもこの問題が発生しました。メソッド自体は正常に機能しましたが、Webrat は「リダイレクトされています」というメッセージを返します。応答。

cucumber に「次にページを表示する」ステップを追加すると (webrat がブラウザで開くページが表示されます)、example.org リンクへのリンクを含む「リダイレクトされています」という応答が表示されました。

これに基づいて、Yannimac のパッチ ( http://groups.google.com/group/webrat/browse_thread/thread/fb5ff3fccd97f3df )を発見しました。

#/lib/webrat/core/session.rb
#starting at line 288

def current_host
- URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com"
+ URI.parse(current_url).host || @custom_headers["Host"] || default_current_host
end

+ def default_current_host
+   adapter.class==Webrat::RackAdapter ? "example.org" : "www.example.com"
+ end 

これらの変更を行うことで問題が修正されたため、Webrat での redirect_to 呼び出しが正しく機能するようになりました。

于 2010-08-13T15:04:34.327 に答える
3

rails 3 と webrat にはいくつかの問題があります。参照してください:

http://baldowl.github.com/2010/12/06/coercing-cucumber-and-webrat-to-cooperate.html

于 2011-01-30T16:44:23.970 に答える
0

これが、この問題を解決するために必要なことの要点です。

https://gist.github.com/752766

于 2011-02-26T01:48:10.967 に答える
0

アプリに認証はありますか? リダイレクトは、認証されていないためだと思います。私の推測が正しければ、Webrat で最初にログインするためのセットアップを作成します。

于 2010-06-04T15:38:32.897 に答える