简体   繁体   English

FactoryGirl验证失败:电子邮件已经被接收

[英]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 . AdminCustomer继承自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.

相关问题 创建多个FactoryGirl记录。 验证失败:电子邮件已经被接收 - Creating multiple FactoryGirl records. Validation failed: Email has already been taken Rails教程错误:“验证失败:已经收到电子邮件” - Rails Tutorial error: “Validation failed: Email has already been taken” ActiveRecord :: RecordInvalid:验证失败:电子邮件已经被接收 - ActiveRecord::RecordInvalid: Validation failed: Email has already been taken 我无法使用FactoryGirl.create创建对象,验证失败用户已被占用 - I can't create object with FactoryGirl.create, validation failed User has already been taken FactoryGirl错误:“已经收到电子邮件。” - FactoryGirl error: “Email has already been taken.” FactoryGirl电子邮件已被收取 - FactoryGirl Email already taken 在两个模型之间的关联在第三个模型上发生错误之后:ActiveRecord :: RecordInvalid:验证失败:电子邮件已经被接收 - after association between two models error on a third : ActiveRecord::RecordInvalid: Validation failed: Email has already been taken 捆绑包执行rake db:populate-activerecord :: recordinvalid:验证失败:电子邮件已被接收 - bundle exec rake db:populate - activerecord::recordinvalid:validation failed:email has already been taken RSpec ActiveRecord :: RecordInvalid:验证失败:尽管在FactoryBot中有序列,但电子邮件已经被接收 - RSpec ActiveRecord::RecordInvalid: Validation failed: Email has already been taken despite having sequence in FactoryBot RSPEC 错误:验证失败:Email 已经被拿走了 Rails 教程 - RSPEC error: Validation failed: Email has already been taken Rails Tutorial
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM