1
我有下面的代码: 我users_controller_test.rb:FactoryGirl验证失败:电子邮件已经采取
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
在我的序列:
sequence :email do |n|
"email-#{n}@example.com"
end
而且我的工厂:
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
而且
FactoryGirl.define do
factory :customer do
end
end
而且
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
和User
继承Customer
。 现在我有Validation failed: Email has already been taken
错误行customer = FactoryGirl.create :customer
。我试图清理数据库。耙db:test:prepare
也没有工作。
THX,现在买我的ActiveRecord :: AssociationTypeMismatch:管理员(#79763910)预期,得到了用户(# - 620843828)错误。如何解决它? – cnaize
哦,他们是不同的班级。如果将'class:Admin'添加到工厂声明中,它会显示:'factory:admin,parent :: user,class:Admin do'? 如果没有,您应该在':admin'和':customer'工厂中添加'email {generate:email}'。 –