Ruby on rails 如何在水豚试验中用Rspec剔除看守/设计

Ruby on rails 如何在水豚试验中用Rspec剔除看守/设计,ruby-on-rails,ruby,rspec,devise,capybara,Ruby On Rails,Ruby,Rspec,Devise,Capybara,我想在我的Rails应用程序中的一个Capybara测试套件中使用rspec mock来剔除一个登录用户(带有Desive/Warden)。这将节省大量时间,并意味着我的测试套件可以/将定期运行 在此之前,我可以使用authlogic通过以下代码删除我的会话模型来实现这一点: def login(user) user_session = mock_model(UserSession, {:user => user}) UserSession.stub(:find).and_retu

我想在我的Rails应用程序中的一个Capybara测试套件中使用rspec mock来剔除一个登录用户(带有Desive/Warden)。这将节省大量时间,并意味着我的测试套件可以/将定期运行

在此之前,我可以使用authlogic通过以下代码删除我的会话模型来实现这一点:

def login(user)
  user_session = mock_model(UserSession, {:user => user})
  UserSession.stub(:find).and_return(user_session)
end
现在我正在使用Desive,我不再能够访问UserSession对象。由于我使用水豚来测试我的代码,所以我无法直接访问请求对象来使用Desive内置的
sign\u-in
test helper


我的问题是:我如何用capybara、Desive和spec Mock模拟登录用户,而不要求登录用户的每个场景首先进入注册路径、填写表单、提交、等待响应,然后进入所需页面

Warden提供内置测试助手。它允许您登录,而无需在测试中使用UI。只需将下面的文件添加到您的项目中

#features/support/warden.rb

Warden.test_mode!
World Warden::Test::Helpers
After { Warden.test_reset! }
Given /^I am logged in as a user$/ do
  @current_user = User.create!(:username => 'user', :password => 'password')
  login_as(@current_user, :scope => :user)
end
\features/step\u definitions/user\u steps.rb

Warden.test_mode!
World Warden::Test::Helpers
After { Warden.test_reset! }
Given /^I am logged in as a user$/ do
  @current_user = User.create!(:username => 'user', :password => 'password')
  login_as(@current_user, :scope => :user)
end

不是你问的那样,只是以防万一,谢谢你的回复,我已经有了这样的东西,我正试图避免。虽然你的评论对那些未来可能没有帮助的访问者来说肯定是有帮助的。我认为这是一个正确的方向,但不能很好地发挥作用。helper方法被正确调用,但是当前用户等仍然没有在我的应用程序中正确显示。这对你有用吗?我需要指定我当前的scope
login\u为@current\u user,:scope=>:user
谢谢你的帮助也谢谢你链接到capybara页面,实际上我最后写了这个^_^