2

restful_authenticationとcucumberでストーリーを利用するにはどうすればいいですか?

  • rails(2.3.2)の最新の安定版、
  • rspec(1.2.2)、
  • cucumber(0.2.0.4をクローニングした後... 2009年3月24日に出てきました)、
  • rspec-rails(1.2.2)、
  • restful-authentication
  • (固定formatted_user_pathおよびその他のいくつかの問題)、
  • webrat
  • rubyist-aasm(およびいくつかの他)きれいなRailsアプリケーションへ

、および以下の(私は信じているものを)各プラグインのすべての命令、キュウリの物語はまだ:-(失敗しています。ここでの問題の概要です:

  1. リダイレクトが作成されたにもかかわらず、右バット働いていない「map.rootを:コントローラ=> 『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'' 
    
  2. 物語はlogged_in?を語りますメソッドは、features/step_definitions/ra_env.rbファイル呼び出しにもかかわらず保護されています。
    ApplicationController.send(:public, :logged\_in?, :current\_user, :authorized?)
    スタブを必要とせずにこれらのメソッドを使用できるようにしますか?

ああ、私はautospecを実行しようとしているので、私はそれを始めるために、次のコマンドをやった:ただ、

 
export AUTOFEATURE=true 
rake spec:server:start 
ruby script/autospec 
+0

残念ながら、以下の回答はあまり役に立ちませんでした。そこにいる誰かが、少なくとも「保護された方法」のエラーがなぜ表示されているのか理解していますか? – btelles

答えて

2

は、私が得たものである...しかし他の問題のいくつかを戦います。 ra_response_steps.rbリダイレクトが粗悪になると予想し、リダイレクトを定義するストーリーをたどる必要があります。

 
    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がリダイレクトに従っているからです。 回避策として、webratセッションでこれらの行をコメントすることができますが、これはまあまあの解決策ではありません。私はもう少し動作し、パッチをどこかに投稿します。

+0

優れたヒューゴ!ありがとうございました!これは問題のリダイレクト部分を解決しました。 – btelles

0

私が提供する指導の多くを持っていません同情 - 私は最近、同じ問題に対処するために数時間を費やしました。上の方で、RSpecをどのように学んだのです。

私が見つけたことの1つは、失敗の多くは、とにかく変更したいことだったということです。たとえば、ログイン時に「/」にリダイレクトしたくない場合などです。

最終的には、どこを見ていたのかわからなくても、ほとんどの失敗は簡単に修正できました。

+1

ハハ...同情のためにありがとう。残念ながら、私はあなたよりも遅い学習者です。私は過去3日間、それをすべて把握しようとしました。おそらく満夜の睡眠は傷つかないでしょう。 :-) – btelles

0

私は同じ問題を解決しています。私はまだそこにはいませんが、ApplicationController.send(:public、:logged_in ?,:current_user、:authorized?)は、代わりに/ env.rbをサポートする必要があります。

私はuser_steps.rbでログアウト機能の定義を変更しなければならなかった
1

:DEF
   のget '/ログアウト' をlog_out


エンド

それは取得しようとしていた前に、/session/destroy 'は、デフォルトルートを削除しない場合にのみ存在します。

また、application_controllerに「AuthenticatedSystemを含める」ことを確認してください。

はまだ私はここにいくつかの研究を行ってきたと

1

"Protected method"の問題については、autospecを使用せずにconfig.cache_classes = trueのままにしておくと、テストに合格することがわかりました。

config.cache_classes = falseを指定すると、エラーが再度発生します。

問題は、クラスキャッシングがレールに実装される方法、またはrspecが作成されたクラスをどのように管理するかによると思われる。残念ながら私はログ全体をより詳細に調べるためのリソースがありません。それについてはよくお読みになります。 http://groups.google.com/group/rspec/browse_thread/thread/500ede090bd08996/25a3d9a7d283696b?lnk=gst&q=cache_classes#25a3d9a7d283696b

0

上記のエラーが発生します。しかし、私のアプリでoccuring最初の問題はこれです:

機能/ step_definitions/user_steps.rb:16:

複数のステップの定義は、同じ正規表現を持っている(。*)/^(.*) (.*) user named '(.*)'$/' features/step_definitions/user_steps.rb:29:in/^で名付けていないユーザーがあります'(。 *)' $ /」

(キュウリ::冗長)

確かに、私はこの問題を解決することができますが、より多くのエラーは?保護LOGGED_IN含む(コントローラのメソッドに従います、失敗RSpecsなど)。

誰でも知っていますか?私たち全員がここで根本的に間違っていると思いますか?それとも、現在のリリースでrestful_authenticationが壊れているだけですか?

2

私はよく、問題の核心を説明し、このブログの記事を見つけました:

http://blog.andrew.premdas.org/articles/2008/10/15/webrat-visits-and-redirects

基本的に、安らかな認証テストはwebratを使用してテストするべきではない何かをテストしようとしています。だから、上記の変更は私がおそらく変更すべきだと思っているものの反対です。

私はリダイレクトをテストしないで、最終ページをテストするように安静認証テストを変更しました。しかし、まだ私は理解していない特定のリダイレクトに問題があるように思われる:

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がどこから来ている私は理解していません。他に誰も似たようなエラーがありますか?

+0

私はこのリンクが死んでいると信じています –

関連する問題