Ner*_*ian 28 ruby-on-rails shopify capybara
我正在为Shopify开发一个应用程序,我想进行集成测试.
我需要能够在会话变量中存储一些值,以便身份验证起作用.
我怎么能这样做?
我使用Capybara和Capybara-webkit.
ron*_*nen 27
接受的答案表明rack_session_access.它的工作原理是插入中间件控制器来编辑和更新会话状态,然后让capybara访问该页面并提交一个包含会话数据的表单.非常巧妙!但如果您使用Warden(直接或通过Devise),则不必要.
Warden有一个钩子on_next_request,可以访问warden机制,可以直接设置会话密钥.我把它扔在一起把它捆绑在rspec中:
创建spec/support/inject_session.rb
:
module InjectSession
include Warden::Test::Helpers
def inject_session(hash)
Warden.on_next_request do |proxy|
hash.each do |key, value|
proxy.raw_session[key] = value
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
在spec/spec_helper.rb
功能规格中包含模块:
RSpec.configure do |config|
config.include InjectSession, :type => :feature
end
Run Code Online (Sandbox Code Playgroud)
然后在规范中使用样本可能是:
inject_session :magic => 'pixie dust', :color => 'pink'
visit shopping_cart_path
page.should be_all_sparkly_and_pink # or whatever
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15772 次 |
最近记录: |