2011-12-19 12 views
0

私はカピバラをプロジェクトに統合しています。最初のインスタンスでは、私は、ログインページが表示されている情報を確認してみたかったので、私はこのコードを作っ: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サーバにリダイレクトして(ログイン時に/ loginコンテキストを持っています)ログインしてから、自分のサーバに再度リダイレクトします。 ログインページを表示する方法、またはcapybaraのリダイレクト参照を維持する方法を教えてください。

答えて

1

からの助けを得ることができます私は通常これを行う

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 '/' 

これはあなたのために私に教えてください。

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

を:: Railsの「CASClient ::フレームワークを使用せずに、 :: Filter.fake(username) "私も同じエラーが発生します。 その理由は、casが "/login?service=http%3A%2d%2Fwww.example.com%aF"のようなパラメータを使用してベースURLにリダイレクトするためです。 そしてそれは行方不明を苦情する。

0

適切な経路が追加されていることを確認してください。あなたがルートを欠いているようです。

私はこれがあなたを助けてくれることを願っています。私test.rb内部

書き込みルートでは、あなたがhttp://railscasts.com/episodes/79-generate-named-routes

+0

テスト・ログをチェックしかし、「/ログイン」私のアプリケーション上で有効な経路ではない、別のアプリケーションとアドレスに位置している認証システム(rubycas-サーバ)のルートです。たとえば、アプリケーション(http:// localhost:3000)にログインしてセッションがない場合、認証サーバーに直ちにリダイレクトされます(http://www.authserver.com/login?.. )ログインページがあり、ログインした後に私は再びlocalhostにリダイレクトされます。私のアプリケーションで有効なルートとして '/ login'を追加するのはなぜですか? –

+0

あなたが確かにしているのは、capybaraはフィールドの一部ではない、例えば、リモートページのfacebookをタイプして、入力してから入力してください。他のWebサイトではなく、ローカルホスト上でテストケースを実行する必要があります。 –