尽管我创建了一个新帐户并立即使用它,但由于电子邮件或密码错误,测试失败
这是文件
规格/工厂/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] 删除。
我来说两句