добавление индекса в виновник столбца электронной почты для неудачных тестов - PullRequest
24 голосов
/ 24 апреля 2011

Я новичок в разработке и рельсах, и я только что интегрировал разработку с моим примером приложения. Я заметил, что после создания модели user все мои модульные тесты не прошли. Я попытался сузить это и обнаружил, что даже сгенерированное утверждение «истина» для user_test.rb также не удается:

ActiveRecord::RecordNotUnique: SQLite3::ConstraintException: \
    column email is not unique: INSERT INTO "users" (...

Как только я закомментировал add_index ...

# add_index :users, :email, :unique => true

... и перезапуск rake db:test:load и повторный запуск тестов с ruby -I test test/unit/user_test.rb, которые он проходит.

Кто-нибудь еще испытывал это?

Ответы [ 2 ]

55 голосов
/ 25 апреля 2011

Если вы только что сгенерировали модель устройства, также был создан прибор с более или менее этим содержимым:

one: {}
# column: value
#
two: {}
#  column: value

Этот прибор пытается создать двух пользователей с одинаковыми (несуществующими) электронными письмами. Заменить его на:

one:
  email: test1@test.com

two:
  email: test2@test.com

Это исправит эту ошибку.

1 голос
/ 24 апреля 2011

Ошибка должна происходить в тестовой настройке до фактического теста. Возможно, вы пытаетесь настроить пользователей с одинаковыми адресами электронной почты, либо с помощью приборов, либо с фабрик.

Если вы используете приборы, убедитесь, что каждому пользователю присвоен свой адрес электронной почты. Если вы используете фабрики, используйте последовательность для создания уникальных адресов электронной почты для каждого созданного пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...