如何在rspec中测试redirect_to :back
?
我得到了
ActionController::RedirectBackError
:
在对此操作的请求中未设置HTTP_REFERER
,因此无法成功调用redirect_to :back
。如果这是测试,请确保指定request.env["HTTP_REFERER"]
。
如何在测试中设置HTTP_REFERER
?
发布于 2011-07-18 15:28:31
使用RSpec,您可以在before
块中设置referer。当我尝试在测试中直接设置referer时,无论我把它放在哪里,它似乎都不起作用,但之前的代码块起到了作用。
describe BackController < ApplicationController do
before(:each) do
request.env["HTTP_REFERER"] = "where_i_came_from"
end
describe "GET /goback" do
it "redirects back to the referring page" do
get 'goback'
response.should redirect_to "where_i_came_from"
end
end
end
发布于 2016-10-22 02:19:56
当使用新的请求样式请求请求时,从rails guide :
describe BackController < ApplicationController do
describe "GET /goback" do
it "redirects back to the referring page" do
get :show,
params: { id: 12 },
headers: { "HTTP_REFERER" => "http://example.com/home" }
expect(response).to redirect_to("http://example.com/home")
end
end
end
发布于 2016-04-18 22:51:18
我觉得公认的答案有点老生常谈。一个更好的选择是将HTTP_REFERER
设置为应用程序中的实际url,然后期望被重定向回来:
describe BackController, type: :controller do
before(:each) do
request.env['HTTP_REFERER'] = root_url
end
it 'redirects back' do
get :whatever
response.should redirect_to :back
end
end
对于较新版本的rspec,您可以改用expectations:
expect(response).to redirect_to :back
https://stackoverflow.com/questions/6040479
复制相似问题