Sch*_*ems 9 ruby rspec ruby-on-rails devise capybara
我想在我的Rails应用程序中的Capybara测试套件中使用rspec模拟来存根登录用户(使用Devise/Warden).这将节省大量时间,并且意味着我的测试套件可以/将定期运行.
以前我可以使用authlogic通过使用如下代码来截断我的会话模型来做到这一点:
def login(user)
user_session = mock_model(UserSession, {:user => user})
UserSession.stub(:find).and_return(user_session)
end
Run Code Online (Sandbox Code Playgroud)
现在我正在使用Devise,我再也无法访问UserSession对象了.因为我使用capybara来测试我的代码,所以我没有直接访问请求对象来使用devise的内置sign_in
测试助手.
我的问题是:我如何使用水豚,设计和规范模拟模拟登录用户,而不需要每个具有登录用户的方案首先进入注册路径,填写表单,提交,等待响应,以及然后转到所需的页面?
Mar*_*sic 16
Warden带有内置测试助手.它允许您登录而无需在黄瓜测试中使用UI.只需将以下文件添加到项目中即可.
# features/support/warden.rb
Warden.test_mode!
World Warden::Test::Helpers
After { Warden.test_reset! }
Run Code Online (Sandbox Code Playgroud)
# features/step_definitions/user_steps.rb
Given /^I am logged in as a user$/ do
@current_user = User.create!(:username => 'user', :password => 'password')
login_as(@current_user, :scope => :user)
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6485 次 |
最近记录: |