учебник ruby ​​on rails TDD "Электронная почта уже занята" - PullRequest
2 голосов
/ 24 января 2011

Я изучал урок Майкла Хартла http://railstutorial.org/, и по большей части это было огромной помощью в начале работы с Rails. Книга очень сфокусирована на TDD, и это здорово, потому что я хотел изучить TDD, но проблема в том, что 90% моих тестов проваливаются с ошибкой «Электронная почта уже получена». Я думаю, что происходит то, что при запуске теста создается пользователь с электронной почтой «user@example.com», как предлагается в книге. Проблема в том, что при запуске второго теста, который должен создать пользователя, он использует тот же адрес электронной почты «user@example.com». Я знаю, что есть обходные пути, которые я видел, используя фабричную девочку для создания последовательности адресов электронной почты, но мне не нужно было делать это, чтобы пример из учебника работал правильно.

Кто-нибудь еще сталкивался с этой проблемой? Судя по отсутствию вопросов по этой конкретной теме, я думаю, что это ошибка в моем коде, но, возможно, кто-то еще сталкивался с этим.

Ответы [ 5 ]

2 голосов
/ 01 февраля 2011

Doh!Проблема была в комментариях:

config.use_transactional_fixtures = true

в spec_helper.rb!

Ошибка новичка.

1 голос
/ 24 января 2011

Полезный ресурс для очистки вашей базы данных для ваших тестов:

https://github.com/bmabey/database_cleaner

0 голосов
/ 15 марта 2011

Я видел похожее поведение в конце CH 11. Мой spec_helper.rb был правильным. Это исправило это для меня:

перезапустил "rails s"
перезапущенный автотест
рейк дБ: сброс
рейк дБ: мигрировать
грабли дб: тест: подготовить
рейк дБ: заселить

НТН, Перри

0 голосов
/ 24 января 2011

У меня недавно была эта проблема.Тестовая БД должна быть очищена после тестов, но по какой-то причине это не так.Все, что я сделал, это запустил 'rake db: reset', чтобы сбросить все настройки и затем убедиться, что я использую фабрики (Factory Girl).Просто попробуйте использовать приборы или фабрики, чтобы точно знать, что вы не попали в базу данных.

0 голосов
/ 24 января 2011

Вы должны искать по теме, как чистить базу данных после каждого теста. Проблема также может быть вызвана тем, что пользователь по умолчанию загружается из приборов, а затем, когда вы снова создаете hin в тесте, но если вы скажете 90%, это похоже на первый случай. Я не прикрепляю ссылки, потому что это имеет значение, когда вы используете rspec, test :: unit или cucumber, у каждого из них есть свои привилегии.

Удачного кодирования!

...