我有两个 capybara 测试正在测试我的 rails 应用程序上的注册过程,都使用 factory girl。一种是使用 Factory Girl build 命令并将其保存为以下形式:
it 'should create a user and associated customer_info', js: true do
visit signup_path
user = build(:user)
customer = build(:customer_info)
sign_up user, customer
page.should have_content 'Welcome back, ' + customer.firstname
end
而另一个正在使用 create 命令,然后尝试使用该信息登录。
it 'should be able to sign in', js: true do
user = create(:user)
customer = create(:customer_info, user_id: user.id)
visit new_user_session_path
fill_in 'user_email', with: user.email
fill_in 'user_password', with: user.password
click_button 'Sign in'
page.should have_content 'Welcome back, ' + customer.firstname
end
第一个通过并保存在我的测试数据库中。第二个失败,说“无效的电子邮件或密码”,但是当我在每次测试后检查我的数据库时,第一个保存记录但第二个没有(我假设这就是为什么它说无效的电子邮件/密码)。
为什么我的 FactoryGirl 创建函数实际上没有将我的记录保存在数据库中的任何想法?
编辑
我的 FactoryGirl 电子邮件定义中有一个序列,并且构建和创建都增加了序列,所以它不应该创建重复,对吗?
FactoryGirl.define do
factory :user do
sequence(:email) { |n| "foo#{n}@example.com"}
password "secret"
password_confirmation "secret"
end
end