我的 Rails 应用程序有一个 Cucumber 步骤:
Then /^I should be redirected to the sign in page$/ do
assert_equal 302, @response.status
end
但是该@response
对象是 my 返回的对象Controller
,它是 Rack 中间件将状态设置为我期望的状态。如何获得从最外层中间件返回的响应,而不是从控制器返回的响应?
我的 Rails 应用程序有一个 Cucumber 步骤:
Then /^I should be redirected to the sign in page$/ do
assert_equal 302, @response.status
end
但是该@response
对象是 my 返回的对象Controller
,它是 Rack 中间件将状态设置为我期望的状态。如何获得从最外层中间件返回的响应,而不是从控制器返回的响应?
从您的步骤定义看来,您应该测试您是否在登录页面上,而不是您是否有 302。但是按照您的方式,这是步骤:
Then /^I should be redirected to the sign in page$/ do |url|
assert @integration_session.status == 302, "Expected status to be 302, got #{@integration_session.status}"
end
尝试response
不使用“@”。它会给你 WebRat 看到的响应对象。