Записи, созданные в Rails, не сохраняются для проверки базы данных - PullRequest
1 голос
/ 30 марта 2012

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

test "new course" do
   course = Course.new
   course.name = 'test'
   assert course.save
end

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

1 Ответ

7 голосов
/ 30 марта 2012

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

Тесты для Rails запускаются внутри транзакций базы данных (по умолчанию 1 ), поэтому он будет продолжать создавать данные внутри теста и выполнять все ваши утверждения, но как только все будет сказано и сделано, он будет откатить эту транзакцию, оставив базу данных в первоначальном состоянии.

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


1 Хотя это можно изменить, отключив настройку (я забыл, что это такое в Test :: Unit land) или используя такие инструменты, как database_cleaner .

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