首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Capybara测试中使用Rspec清除Warden/Devise

如何在Capybara测试中使用Rspec清除Warden/Devise
EN

Stack Overflow用户
提问于 2012-01-03 06:04:03
回答 1查看 6.8K关注 0票数 9

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

以前,我可以使用authlogic来实现这一点,方法是用下面这样的代码来存根我的会话模型:

代码语言:javascript
复制
def login(user)
  user_session = mock_model(UserSession, {:user => user})
  UserSession.stub(:find).and_return(user_session)
end

现在我正在使用Devise,我不再能够访问UserSession对象。因为我使用水豚来测试我的代码,所以我不能直接访问request对象来使用devise内置的sign_in测试助手。

我的问题是:我如何使用水豚、设计和规范模拟模拟登录用户,而不要求登录用户首先转到注册路径、填写表单、提交、等待响应,然后转到所需的页面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-03 22:38:37

Warden带有内置的测试助手。它允许您登录,而不必在您的黄瓜测试中使用UI。只需将以下文件添加到您的项目中。

# features/support/warden.rb

代码语言:javascript
复制
Warden.test_mode!
World Warden::Test::Helpers
After { Warden.test_reset! }

# features/step_definitions/user_steps.rb

代码语言:javascript
复制
Given /^I am logged in as a user$/ do
  @current_user = User.create!(:username => 'user', :password => 'password')
  login_as(@current_user, :scope => :user)
end

Use Wardens.test_mode! with Capybara

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8705790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档