RubyとカピバラでのRoutingError

私はカピバラをプロジェクトに統合しています。最初の例では、ログインページの表示内容を確認したかったので、このコードを作成しました:

require 'acceptance/acceptance_helper'
feature 'Login' do
  scenario 'sign in with right credentials' do
    visit '/'
    save_and_open_page
  end
end

しかし、私はテストを実行すると、それは私を示しています:

 Failure/Error: visit '/'
 ActionController::RoutingError:
   No route matches "/login"
 # ./spec/acceptance/login_spec.rb:6

私が有効なセッションなしでアプリケーションに入ると、Rubyサーバに私(コード302)をリダイレクトして(私は/ loginコンテキストを持っています)ログインしてから私のサーバに再度リダイレクトします。 ログインページを表示する方法、またはcapybaraのリダイレクト参照を維持する方法を教えてください。

0

2 答え

私は通常これを行う:

私のtest.rbの中で:

    require 'casclient'
  require 'casclient/frameworks/rails/filter'

  CASClient::Frameworks::Rails::Filter.configure(
      :cas_base_url => cas_base_url
  )

次のように仕様を変更します。

CASClient::Frameworks::Rails::Filter.fake(username)
  visit '/'

これがあなたのために働くかどうか私に教えてください。

========================================== ==================

"CASClient :: Frameworks :: Rails :: Filter.fake(username)"を使わないと、同じエラーが出ます。 その理由は、casが "/login?service=http%3A%2d%2Fwww.example.com%aF"のようなパラメータを使用してベースURLにリダイレクトするためです。 したがって、それはルートの欠落について苦情を言います。

  • テストログを確認する
1
追加された

適切なマッチングルートを追加してください。あなたがルートを欠いているようです。

これがあなたに役立つことを願っています

For writing routes you can get help from http://railscasts.com/episodes/79-generate-named-routes

0
追加された
しかし、 '/ login'は私のアプリケーションの有効なルートではなく、別のアプリケーションとアドレスにある認証システム(rubycas-sever)のルートです。たとえば、自分のアプリ( localhost:3000 )に自分のアプリケーションを入力してもセッションがない場合は、私のリダイレクト先になります即座に認証サーバー( authserver.com/login?... )にアクセスしてくださいログインページです。ログインした後、私は再びlocalhostにリダイレクトされます。私のアプリケーションで有効なルートとして '/ login'を追加するのはなぜですか?
追加された 著者 Alter Lagos,
あなたが確かめることは、カピバラはフィールドの一部ではない、例えば、リモートページのfacebookをタイプして、入力してから入力してください。他のWebサイトではなく、ローカルホスト上でテストケースを実行する必要があります。
追加された 著者 Malik Arsalan Tahir,