Ruby on rails 如何在集成测试中设置引用者

Ruby on rails 如何在集成测试中设置引用者,ruby-on-rails,rspec,Ruby On Rails,Rspec,Rspec无法访问HTTP引用程序 我的user_sessions#create操作包含:redirect_to:back,Rails只能通过读取HTTP引用来执行该操作 Stackoverflow包含了大量关于如何在控制器规范中设置/模拟/任何引用的帖子。一般的氛围是request.env[“HTTP\u REFERER”]=etc 但我需要重定向\u to:back以在如下所示的集成测试中工作: click_link "login" page.current_path.should == "

Rspec无法访问HTTP引用程序

我的
user_sessions#create
操作包含:
redirect_to:back
,Rails只能通过读取HTTP引用来执行该操作

Stackoverflow包含了大量关于如何在控制器规范中设置/模拟/任何引用的帖子。一般的氛围是
request.env[“HTTP\u REFERER”]=etc

但我需要
重定向\u to:back
以在如下所示的集成测试中工作:

click_link "login"
page.current_path.should == "/login"
fill_in "user_session_email", :with => @user.email
fill_in "user_session_password", :with => @user.password
click_on "submit_user_session"
page.current_path.should == new_order_path
click_on "submit_order"
我该怎么做


如果解决方案告诉此规范为其访问的每个URL存储引用(因此测试是健壮的),并且对其他规范没有影响(速度方面),则会获得额外积分。

以下是用于实现该方法的代码:

您是否尝试过直接设置
request.headers['Referer']

Capybara.current_session.driver.header 'Referer', 'http://example.com'
看起来您正在使用,您可以使用水豚来显式设置referer。您需要随时更新它,如果需要删除它,可以将其设置为
nil

也许更干净一点:

referer = 'http://example.com'
Capybara.current_session.driver.header 'Referer', referer

这似乎是条正确的道路。如果我们的答案能结合起来。谢谢
Capybara.current\u session.driver.header'Referer',page.current\u path
就在
点击链接“login”
之前。这是怎么回事?page.current_path不是nil吗?对不起,我太早点击了提交。我现在让它工作了。我马上提交工作版本。工作代码是。。。在spec_helper.rb中:
Capybara.server_port=4000
(如果您是ICQ用户,显然选择不同的端口。)在集成测试中:
store_path=”http://localhost:4000#{page.current\u path}“
单击链接“登录”
Capybara.current\u session.driver.header'Referer',store\u path
referer = 'http://example.com'
Capybara.current_session.driver.header 'Referer', referer