Ruby on rails - FactoryGirl 验证失败:电子邮件已被占用



我有下一个代码:我的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

在我的序列中:

sequence :email do |n|
    "email-#{n}@example.com"
  end

还有我的工厂:

FactoryGirl.define do
  factory :admin do
  end
end

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

AdminCustomer继承自User。现在我在第 customer = FactoryGirl.create :customer 行中有Validation failed: Email has already been taken错误.我试图清理数据库。耙子db:test:prepare也不起作用。

难道你的:admin:customer工厂不是从你的:user工厂继承的吗?如果您的:admin:customer工厂是这样定义的,它是否有效?

FactoryGirl.define do
  factory :admin, parent: :user do
  end
  factory :customer, parent: :user do
  end
end

最新更新