我做了很多研发工作,但对于简单的问题仍然没有答案-我的会话对象在哪里?
我有这样的情况:
Scenario: I should be able to add products to the basket
Given I have a product named "Mousepad" # creates object using FactoryGirl
When I add "Mousepad" to basket # sends POST request to add product
Then I should have 1 item in my basket # visit basket page
这是购物篮方法:
def set_current_basket
@basket = (session[:basket] ||= Basket.new)
end
它可以在浏览器中正常运行,但不能在测试中运行。@basket allways是新对象。即使我在第一步中设置session [:test] = 1,在下一个步骤中也将为零。
我错过了什么吗,怎么可能?
Capybara背后的想法是,您将模仿用户的行为,因此您不需要直接的会话访问。
但是我同意这不是100%的时间是正确的,特别是当您依赖某些第三方软件时,在这种情况下,我建议您使用gem rack_session_access,它将允许您像这样访问会话:
page.set_rack_session basket: Basket.new
并通过访问 page.get_rack_session_key('basket')
请记住,这是一种黑客行为,如果最终用户也不需要直接访问会话,则无需这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句