[英]FactoryGirl Validation failed: Email has already been taken
I have next code: My users_controller_test.rb: 我有下一个代码:我的users_controller_test.rb:
require 'test_helper'
class Api::Be::UsersControllerTest < ActionController::TestCase
setup do
admin = FactoryGirl.create :admin
store = FactoryGirl.create(:store, admin: admin)
store.ug_default = UgDefault.new
store.save
customer = FactoryGirl.create :customer
customer.store_id = store.id
customer.save
end
test "should show user" do
get :show, store_id: store.id, u: admin.u_token
assert_response :success
json = response.body
data = JSON.parse(json)
assert_equal 'ok', data['status']
end
end
In my sequences: 在我的序列中:
sequence :email do |n|
"email-#{n}@example.com"
end
And my factories: 而我的工厂:
FactoryGirl.define do
factory :admin do
end
end
And 和
FactoryGirl.define do
factory :store do
admin
name {generate :string}
subdomain {generate :string}
linked_domain {generate :string}
end
end
And 和
FactoryGirl.define do
factory :customer do
end
end
And 和
FactoryGirl.define do
factory :user do
first_name {generate :string}
last_name {generate :string}
email {generate :email}
password_digest {generate :password_digest}
login_attempts 1
company_name {generate :string}
phone {generate :string}
u_token 'u'
end
end
Admin
and Customer
inherited from User
. Admin
和Customer
继承自User
。 Now I have Validation failed: Email has already been taken
error in line customer = FactoryGirl.create :customer
. 现在,我的
Validation failed: Email has already been taken
customer = FactoryGirl.create :customer
行中的Validation failed: Email has already been taken
错误处理。 I've tried to clean database. 我试图清理数据库。 rake
db:test:prepare
didn't work too. rake
db:test:prepare
也不起作用。
Can it be that your :admin
and :customer
factories does not inherit from your :user
factory? 可能是您的
:admin
和:customer
工厂没有从您的:user
工厂继承吗? Does it work if your :admin
and :customer
factories are defined like this? 如果这样定义您的
:admin
和:customer
工厂,是否可行?
FactoryGirl.define do
factory :admin, parent: :user do
end
factory :customer, parent: :user do
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.