1

次のテストを使用して、ログインフォームが正しくリダイレ​​クトされるかどうかを確認しようとしています:

    it "should allow you to login" do
    visit "/"
    fill_in 'Email', :with => 'admin@example.com'
    fill_in 'Pass', :with => 'password'
    click_button 'Login'
    response.should be_redirect
end

ただし、rspec は応答が存在しないというメッセージで失敗します。Rails 2.3.4 アプリを実行しているので、rspec 1.3.4 がインストールされています。応答をテストするにはどうすればよいですか?

4

2 に答える 2

0

rails test helper ではなく、Capybara に聞いてみる必要があると思います。

session.status_code.should == "301"  # or 302 

するべきです。

ここで例を見てください:

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Session#status_code-instance_method

于 2012-05-22T20:26:48.780 に答える
0

これは統合仕様 (RSpec がバージョン 2 で「リクエスト仕様」と呼ぶもの) だと思いますか? その場合、応答オブジェクトは使用できません。そのためには、コントローラーの仕様が必要です。たとえば、次のようになります。

describe MyController do
  it "should redirect" do
    post :some_path, {:email => 'admin@example.com', :pass => 'password'}
    response.should be_redirect
  end
end

または、統合仕様で、リダイレクトが成功した後に予想されるパスをテストします。これは RSpec 2 で機能しますが、RSpec 1 については不明です。

current_path.should == "/some_path"
于 2012-05-22T20:21:26.720 に答える