Rails - 登录测试失败

崔阮

尽管我创建了一个新帐户并立即使用它,但由于电子邮件或密码错误,测试失败

这是文件

规格/工厂/admins.rb

  FactoryGirl.define do
      factory :admin do
        email '[email protected]'
        password ('a'..'z').to_a.shuffle.join
      end
  end

规格/功能/sign_in_spec.rb

require 'rails_helper'

describe 'Login', js: true do
  admin = FactoryGirl.create(:admin)
  it 'I can sign in' do
     visit '/admins/sign_in'
     fill_in 'Email', :with => admin.email
     fill_in 'Password', :with => admin.password
     click_button 'Log in'
     expect(page).to have_content('Signed in successfully')
  end
end
托马斯·沃波尔

Hasanuzzaman 的解决方案是正确的,但您可能会从原因的解释中受益。

当您的规格被读入时,它所做的就是定义测试。它们实际上不会立即运行。通过admin = FactoryGirl.create(:admin)在定义测试时而不是在测试运行时执行它所在的行。这意味着它在测试开始时清除数据库之前已经运行,因此该记录实际上并不存在于测试中。通过将它移动到一个 before 块,它在实际运行测试之前实际上不会运行。

describe 'Login', js: true do
  before do
    @admin = FactoryGirl.create(:admin)
  end

  it 'I can sign in' do
     visit '/admins/sign_in'
     fill_in 'Email', :with => @admin.email
     fill_in 'Password', :with => @admin.password
     click_button 'Log in'
     expect(page).to have_content('Signed in successfully')
  end
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章