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

我认为您需要询问 Capybara 而不是 rails 测试助手。

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 回答