どのように物語を作restful_authenticationコ?
-
22-08-2019 - |
質問
後にクローニングの最新安定版
- レール (2.3.2),
- rspec (1.2.2),
- きゅうり (0.2.0.4...出ました2009-03-24),
- rspecレール (1.2.2),
- restful-認証 固定formatted_user_pathなどの問題),
- webrat,
- rubyist-aasm (やその他)
クリーンレール用、(何だと思っているすべての指示のための各プラグインは、きゅうりの物語がない:-(.この概要の問題:
- リダイレクトに組み合わせの意ずれぞれの図。ルート:コントローラー=>"my_controller"'路線:
expected redirect to "/", got no redirect (Spec::Expectations::ExpectationNotMetError) /cygdrive/c/development/test/vendor/plugins/rspec/lib/spec/expectations.rb:57:in `fail_with' /cygdrive/c/development/test/vendor/plugins/rspec/lib/spec/expectations/handler.rb:14:in `handle_matcher' /cygdrive/c/development/test/vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb:31:in `should'. /features/step_definitions/user_steps.rb:111:in `/^an? (.*) user named '(.*)'$/' features/sessions.feature:25:in `And an activated user named 'reggie''
- の話によると、
logged_in?
方法が保護されたものfeatures/step_definitions/ra_env.rb
ファイルを呼び出し:ApplicationController.send(:public, :logged\_in?, :current\_user, :authorized?)
なるっていこうという手法を使用可能なstubbing?
あしっかりしているためautospecので、もちろん、以下のコマンドで開始:
export AUTOFEATURE=true rake spec:server:start ruby script/autospec
解決
私はいくつかの研究を行って、ここで私が得たものであるしました。
ra_response_steps.rb
は、原油を来るようにリダイレクトして、リダイレクト天気を定義するための物語は続くかしなければならない期待しています。
Webratセッションの実装には、次のコードを持っているので、これは失敗してます:
def request_page(url, http_method, data) #:nodoc: h = headers h['HTTP_REFERER'] = @current_url if @current_url debug_log "REQUESTING PAGE: #{http_method.to_s.upcase} #{url} with #{data.inspect} and HTTP headers #{h.inspect}" if h.empty? send "#{http_method}", url, data || {} else send "#{http_method}", url, data || {}, h end save_and_open_page if exception_caught? && Webrat.configuration.open_error_files? raise PageLoadError.new("Page load was not successful (Code: #{response_code.inspect}):\n#{formatted_error}") unless success_code? reset @current_url = url @http_method = http_method @data = data if internal_redirect? check_for_infinite_redirects request_page(response_location, :get, {}) end return response end
if internal_redirect? ... end
に注意してください。これがあればwebratはリダイレクトに従っているので失敗し、私たちのテストを行うものです。
回避策として、あなたはあなたのwebratセッションでそれらの行をコメントすることができますが、これはおそらくまともな解決策ではありません。私は、もう少し仕事とどこかのパッチを投稿します。
他のヒント
私はよく、問題の核心を説明し、このブログの記事を見つけます:
のhttp://blog.andrew .premdas.org /記事/ 2008/10月15日/ webrat-訪問-と-リダイレクトに
基本的に、安らかな認証テストはwebratを使用してテストするべきではない何かをテストしようとしています。したがって、上記の推奨の変化は、私はおそらく変更されるべきだと思うものの反対である。
私は、彼らがリダイレクトをテストしないようにRESTfulな認証テストを変更したが、ちょうどあなたがで終わるどのページをテストしました。しかし、まだ私は理解していない特定のリダイレクトに問題があるように思われる。
Then she should be at the new session page # features/step_definitions/ra_response_steps.rb:15
expected "session/new", got redirected to "http://www.example.com/session/new" (Spec::Expectations::ExpectationNotMetError)
このexample.comがどこから来ている私は理解していません。誰も同様のエラーがありますか?
私はにuser_steps.rbにログアウト機能の定義を変更しなければなりませんでした
DEF log_out
「/ログアウト」を取得
エンド
それはあなたがデフォルトルートを削除しない場合にのみ存在する「/破棄/セッション」を取得しようとしていた前に。
また、あなたがapplication_controllerで "AuthenticatedSystemが含まれる" ことを確認します。
それでもかかわらず、他の問題のいくつかを戦って...
「保護法」の問題については、私は私がautospec使用し、真のconfig.cache_classes =を残していない場合は、テストに合格することを考え出しました。
config.cache_classesを回す= falseが再びエラーを紹介します。
問題はどちらかであるクラスのキャッシュがレールに実装されている方法で、あるいはどのようにRSpecの作成されたクラスを管理していることが表示されます。残念ながら、私は、全体のログよりこの調査するためのリソースを持っていない、そしてで行わ程度の良い議論があります表示されます。 http://groups.google。 COM /グループ/ RSpecの/ browse_thread /スレッド/ 500ede090bd08996 / 25a3d9a7d283696b?LNK = GST&Q = cache_classes#25a3d9a7d283696bする
私は、ただ同情を提供するためのガイダンスの多くを持っていない - 私は最近、同じ問題を扱って数時間を費やしてきました。アップ側では、それは私がRSpecのを学んだ方法です。
例えば、私は、ログイン時に「/」にリダイレクトしたいのですが、他のどこかにありませんでした。 -私が見つけたことの一つは、障害の多くは、私はとにかく変更したいものだったということです 私が見てどこ考え出したのだ後、
最後に、障害のほとんどは、修正するのは簡単だった。
私は同じ問題を通して働いています。私はまだありませんが、私はApplicationController.sendと思います(:公共、:LOGGED_IN?:CURRENT_USER、:?許可が)。代わりに、サポート/ env.rbに行く必要がある。
私も、言及したエラーの一部を取得します。しかし、私のアプリでoccuring最初の問題はこれです:
複数のステップの定義は、同じ正規表現を持っています:
機能/ step_definitions / user_steps.rb:16:(。*)/^(.*) (.*) user named '(.*)'$/'
features/step_definitions/user_steps.rb:29:in
に/ ^という名前のユーザがいません「(。
*) '$ /'
(キュウリ::冗長)
確かに、私はこの問題を解決することができますが、より多くのエラーが続く(コントローラ上の保護LOGGED_IN?方法を含め、失敗RSpecsなど)。
誰もが私たちのすべてがここに根本的に間違って気にいらを行うかどうか、知っていますか?それともそれだけでそのrestful_authenticationが現在のリリースでは壊れているのですか?