2012-01-04 69 views
8

我正在使用rspec和capybara进行集成测试。rspec集成测试中的会话对象

他们的方式使请求规格中的会话对象?

我在我使用会话对象以检查其值以显示选择性内容的图页。

问题现在面临的是,我不能创建要求规范会话对象。 下面是该视图的例子:

<% if session[:role] == "Role" %> 
---content--- 
<% else %> 
--content-- 
<% end %> 

而且我的要求规范

session[:role] = "Role" 
visit my_path 

内,但它引发我一个错误“未定义的方法`会议”的零:NilClass”。

我也试图寻找到创造capybara.But的会话对象无法找到任何东西。

他们有任何解决方法吗?我找不到任何与此有关的事情,似乎这是不可能的。一点帮助真的很感激。

+0

在if条件中,你可能意思是==而不是=。 – 2012-01-04 11:46:27

+0

是对不起,我的意思==这里 – 2012-01-04 11:48:34

回答

3

你应该做的要求规格的方式是访问任何URL,用户通常需要以访问该会话变量设置。

我不知道任何其他方式,或者其他比手工设置会话cookie。 Capybara.current_session.driver.browser.set_cookie让你这样做,但你必须手动创建cookie值。

+0

我想这:饼干[:作用] = “教练”, Capybara.current_session.driver.browser.set_cookie(饼干[:作用]),,但不是working.what英里做错了? – 2012-01-04 13:22:22

+1

这不会设置会话。您需要重现rails如何生成会话cookie并在set_cookie调用中使用该输出。你绝对不是在这里挨打 - 就像我说的通常的做法是访问设置会话 – 2012-01-04 13:30:48

+0

的页面,在我的情况下,我使用应用程序控制器中的私有方法设置这些会话。 – 2012-01-04 13:50:32