ruby-on-rails - 使用 Cucumber,有没有办法让用户在没有界面的情况下登录?

标签 ruby-on-rails ruby-on-rails-3 devise cucumber

我的绝大多数 Cucumber 功能都需要用户登录。但是我真的不需要为每个测试都测试登录功能。我目前正在使用 Devise 进行身份验证。

我正在寻找一种无需填写登录表单即可使用 devise 登录用户的方法。有没有办法做到这一点?我宁愿不必在每次测试中都使用登录操作。

最佳答案

不,没有办法。在 documentation ,关于 sign_in @usersign_out @user辅助方法,它说:

These helpers are not going to work for integration tests driven by Capybara or Webrat. They are meant to be used with functional tests only. Instead, fill in the form or explicitly set the user in session


正如您自己所说,使用 before :each 可能是最干净的。堵塞。我喜欢像下面这样构建它:
context "login necessary" do
  # Before block
  before do
    visit new_user_session_path
    fill_in "Email", with: "test@test.com"
    fill_in "Password", with: "password"
    click_button "Login"
    assert_contain "You logged in successfully."
  end

  # Actual tests that require the user to be logged in
  it "does everything correctly" do
    # ...
  end
end

context "login not necessary" do
  it "does stuff" do
    # code
  end
end

我发现这非常有用,因为如果我更改身份验证规则(即用户是否必须为特定路径登录),我可以进行整个测试并将其移动到另一个描述块中,而无需更改任何更多代码。

关于ruby-on-rails - 使用 Cucumber,有没有办法让用户在没有界面的情况下登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634330/

相关文章:

ruby-on-rails - 第一代后修改设计模块

ruby-on-rails - 与 users.each 一起显示特定的用户计划

ruby-on-rails - Spree 应用和 main rails 应用 CSS 加载

ruby-on-rails - 向 Rails 模型实例对象动态添加哈希属性?

ruby-on-rails - 如何访问使用 Paperclip/Ruby on Rails 上传的文件的原始内容?

ruby-on-rails - 如何从我的 Rails 应用程序中删除图标

ruby-on-rails - content_tag 使用 concat 处理多个部分

ruby-on-rails - 在 rails 4 中设置 date_field 的默认值

ruby-on-rails - Rails 3 应用程序上的多个数据库用户

ruby-on-rails - rails : Warden/Devise - How to capture the url before login/failed access