2

の最新の安定したバージョンのクローンを作成した後

クリーンなRailsアプリケーションに移行し、各プラグインのすべての指示(私が信じていること)に従って、キュウリの話はまだ失敗しています:-(。問題の概要は次のとおりです。

  1. 'map.root:controller => "my_controller"'ルートを作成したにもかかわらず、リダイレクトはすぐには機能しません。
    「/」へのリダイレクトが必要ですが、リダイレクトはありません(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?(。*)'(。*)'$/'という名前のユーザー
    features / sessions.feature:25:in`そして'reggie''という名前のアクティブ化されたユーザー
    
  2. ストーリーによると、ファイルを呼び出し logged_in?てもメソッドは保護されています。features/step_definitions/ra_env.rb
    ApplicationController.send(:public、:logged \ _in?、:current \ _user、:authorized?)
    その呼び出しは、スタブを必要とせずにそれらのメソッドを利用可能にしませんか?

ああ、私はautospecを実行しようとしているので、それを開始するために次のコマンドを実行しました。

AUTOFEATURE=trueをエクスポートします
rake spec:server:start
ルビースクリプト/autospec
4

7 に答える 7

2

問題の要点をよく説明している次のブログ投稿を見つけました。

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

基本的に、安らかな認証テストは、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 がどこから来ているのかわかりません。他の誰かに同様のエラーがありますか?

于 2010-02-02T06:53:25.377 に答える
1

user_steps.rb の logout 関数の定義を次のように変更する必要がありました。

def log_out
  get '/logout'
end

デフォルトルートを削除しない場合にのみ存在する「/session/destroy」を取得しようとする前に。

また、application_controller に「AuthenticatedSystem を含める」ようにしてください。

とはいえ、まだ他のいくつかの問題と戦っています...

于 2009-03-29T18:41:04.437 に答える
1

「保護されたメソッド」の問題については、autospec を使用せずに config.cache_classes=true のままにすると、テストがパスすることがわかりました。

config.cache_classes=false にすると、エラーが再び発生します。

問題は、Rails でのクラス キャッシングの実装方法、または作成されたクラスを rspec が管理する方法にあるようです。残念ながら、このログ全体をさらに調査するためのリソースがありません。これについては、http: //groups.google.com/group/rspec/browse_thread/thread/500ede090bd08996/で適切な議論が行われているようです。 25a3d9a7d283696b?lnk=gst&q=cache_classes#25a3d9a7d283696b

于 2009-04-05T18:07:56.387 に答える
0

私は同じ問題に取り組んでいます。私はまだそこにいませんが、ApplicationController.send(:public、:logged_in?、:current_user、:authorized?)は代わりにsupport/env.rbに入れる必要があると思います。

于 2009-03-27T03:19:05.590 に答える
0

上記のエラーもいくつか発生します。しかし、私のアプリで発生する最初の問題はこれです:

複数のステップ定義には同じ正規表現があります。

features / step_definitions / user_steps.rb:16:in /^(.*) (.*) user named '(.*)'$/' features/step_definitions/user_steps.rb:29:in/ ^'(。*)' $ /'という名前の(。*)ユーザーはありません

(きゅうり::冗長)

もちろん、これを修正することはできますが、さらに多くのエラーが発生します(コントローラーの保護されたlogged_in?メソッド、失敗したRSpecなど)。

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

于 2009-07-03T14:27:22.363 に答える
0

私は提供する多くのガイダンスを持っていません.ただ同情します-私は最近同じ問題に対処するのに数時間を費やしました. 良い面としては、これが私が RSpec を学んだ方法です。

私が発見したことの 1 つは、失敗の多くはとにかく変更したいものだったということです。

結局、どこを見ればよいかがわかれば、ほとんどの失敗は簡単に修正できました。

于 2009-03-25T17:10:18.087 に答える