Я получаю следующую ошибку при запуске 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