ActiveRecord :: RecordInvalid: проверка не удалась: электронная почта уже принята для проверки - PullRequest
0 голосов
/ 11 мая 2018

Я получаю следующую ошибку при запуске rake test:

Error:
ShareTest#test_valid_setup:
ActiveRecord::RecordInvalid: Validation failed: Email has already been taken
test/models/share_test.rb:7:in `setup'

Почему?Я действительно не уверен, что это значит, потому что я получаю сообщение об ошибке, даже когда перезаписываю параметр email в моей настройке.Мои другие тесты проходят просто отлично.Мои ассоциации моделей написаны так:

- User has_many Items, Trades и Shares

- Trade относится к User и Share

- Share принадлежит_ User и Item

- Item принадлежит_ User и has_many Trades и Shares

Связанные фабрики:

FactoryBot.define do
 factory :user, aliases: [:owner, :trade_requester, :trade_recipient, :share_owner] do
  email Faker::Internet.email
  firstname Faker::Name.first_name
  lastname Faker::Name.last_name
  username Faker::Pokemon.name
  website Faker::Internet.domain_name
 end

 factory :item do
  owner
  image { Rack::Test::UploadedFile.new(Rails.root.join('test', 'lilac.jpg'), 'image/jpeg') }
  title Faker::Book.title
  artist Faker::Book.author
  medium Faker::Book.genre
  year Faker::Number.number(4)
  price Faker::Number.between(1, 5)
  length Faker::Number.between(1, 2)
  height Faker::Number.between(1, 2)
  width Faker::Number.between(1, 2)
  agreement true
 end

 factory :share, aliases: [:wanted_share, :collateral_share] do
  user
  item
  amount { Item.price }
  active true
 end
end

И тогда фактический тест, в котором я получаю сообщение об ошибке дубликата:

require 'test_helper'
require 'support/database_cleaner'

class ShareTest < Minitest::Test
 def setup
  DatabaseCleaner.start
  @share = FactoryBot.create(:share)
 end

 def test_valid_setup
  assert_kind_of Integer, share.amount
 end

 def teardown
  DatabaseCleaner.clean
 end
end
...