2017-02-20 2 views
0

Когда я запустил это: rails test, то все мои (10) тесты терпят неудачу с той же ошибкой (Уникальное ограничение не выполнено). Вот сообщения об ошибке:Rails - все тесты сбой - «... ConstraintException: UNIQUE constraint failed: admins.email ...»

E 

Error: 
WelcomeControllerTest#test_the_truth: 
ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: UNIQUE 
constraint failed: admins.email: INSERT INTO "admins" ("created_at", 
"updated_at", "id") VALUES ('2017-02-20 16:22:33.516784', '2017-02-20 
16:22:33.516784', 298486374) 

bin/rails test test/controllers/welcome_controller_test.rb:4 

Один из тестов это одна:

test "the truth" do 
    assert true 
end 

Просматривая вокруг, я увидел, что это, вероятно, было что-то около светильников. В /test/fixtures/admin.yml тогда это было:

# This model initially had no columns defined. If you 
# add columns to the model remove the '{}' from the fixture 
# names and add the columns immediately below each fixture, 
# per the syntax in the comments below 
# 
one: {} 
# column: value 
# 
two: {} 
# column: value 

Если я закомментируйте one: {} и two: {}, то он работает. Я понятия не имею, почему это так? Может ли кто-нибудь объяснить это, пожалуйста?

ответ

2

Не нравится, когда вы используете два электронных письма, которые ноль, он ожидает уникальные адреса электронной почты для каждой модели. Измените его на это:

# This model initially had no columns defined. If you 
# add columns to the model remove the '{}' from the fixture 
# names and add the columns immediately below each fixture, 
# per the syntax in the comments below 
# 
one: 
    email: '[email protected]' 

two: 
    email: '[email protected]' 
+0

Почему в скобках нет ответа? Я пробовал то, что вы написали, и это работает. Но почему это не 'one: {...}', а просто 'one: ...'? Это не работает, если я поставлю скобки. : -/ – Zeth

+1

В верхней части комментария говорится: «Если вы добавляете столбцы в модель, удалите« {} »из прибора, так что {} предназначен только для тех случаев, когда вам вообще не нужны значения. Я считаю, что это потому, что клавишам YAML требуется значение или подразделение, у вас не может быть ключа без значения, поэтому они используют {} для обозначения того, что никакие значения не добавляются. – RichardAE

Смежные вопросы