Rails - 登录测试失败
Rails - log in test fails
尽管我创建了一个新帐户并立即使用,但由于电子邮件或密码错误,测试失败
这是文件
spec/factories/admins.rb
FactoryGirl.define do
factory :admin do
email 'admin@example.com'
password ('a'..'z').to_a.shuffle.join
end
end
spec/features/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
在阻止之前保持 admin = FactoryGirl.create(:admin)
开启,然后尝试。
before(:each) do
@admin = FactoryGirl.create(:admin)
end
现在将此 @admin
用于您的测试块。
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
尽管我创建了一个新帐户并立即使用,但由于电子邮件或密码错误,测试失败
这是文件
spec/factories/admins.rb
FactoryGirl.define do
factory :admin do
email 'admin@example.com'
password ('a'..'z').to_a.shuffle.join
end
end
spec/features/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
在阻止之前保持 admin = FactoryGirl.create(:admin)
开启,然后尝试。
before(:each) do
@admin = FactoryGirl.create(:admin)
end
现在将此 @admin
用于您的测试块。
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