我想在我的Rails应用程序中使用Capybara测试套件中的rspec mocks来清除一个登录的用户(使用Devise/Warden)。这将节省大量的时间,并将意味着我的测试套件可以/将定期运行。
以前,我可以使用authlogic来实现这一点,方法是用下面这样的代码来存根我的会话模型:
def login(user)
user_session = mock_model(UserSession, {:user => user})
UserSession.stub(:find).and_return(user_session)
end现在我正在使用Devise,我不再能够访问UserSession对象。因为我使用水豚来测试我的代码,所以我不能直接访问request对象来使用devise内置的sign_in测试助手。
我的问题是:我如何使用水豚、设计和规范模拟模拟登录用户,而不要求登录用户首先转到注册路径、填写表单、提交、等待响应,然后转到所需的页面?
发布于 2012-01-03 22:38:37
Warden带有内置的测试助手。它允许您登录,而不必在您的黄瓜测试中使用UI。只需将以下文件添加到您的项目中。
# features/support/warden.rb
Warden.test_mode!
World Warden::Test::Helpers
After { Warden.test_reset! }# 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)
endhttps://stackoverflow.com/questions/8705790
复制相似问题