Проблемы с тестовым набором в rails 3.1rc5 - PullRequest
0 голосов
/ 13 августа 2011

Я недавно обновил приложение, над которым работал, до rails 3.1rc5 ..

По большей части это было здорово, но у некоторых из моих тестов были действительно странные проблемы ..

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

Поэтому я прокомментировалвсе мои фабричные вещи и заменили это следующим:

c = Contact.new(:first_name => "SOMEONE", :last_name => "COOL", :dob => 10.years.ago, :sex => "male")
if c.save
  puts "MYCOUNT: #{Contact.count}"
else
  puts "EXPLOSIONS!!!"
end

Запуск этого как части набора огурцов выдает следующее:

MYCOUNT: 0

Таким образом, запись о контакте, очевидно, сохраняется (ипроходя проверки), но он все еще не появляется, когда я звоню счетчик ??

Почему ??

Я использую:

Rails 3.1rc5

rspec-rails

огурцы-рельсы

и

factory_girl_rails

Я также должен отметить, что я индексирую свои модели с помощью солнечного пятна (solr API) https://github.com/outoftime/sunspot

1 Ответ

1 голос
/ 23 августа 2011

Похоже, что в ходе теста у вас сработала откат транзакции:

1) Открыта транзакция

2) Contact.save успешно выполнен (теперь есть законный экземпляр Contact и запись в БД)

3) Что-то идет не так, вызывает ActiveRecord :: Rollback

4) Транзакции откатываются, оставляя законный экземпляр Contact, но нет записи в БД, количество = 0

Я неНе знаю, что может вызвать это из-за вашего обновления Rails, но, возможно, это поможет вам найти причину ошибки.

РЕДАКТИРОВАТЬ:

Если вы подключите свой файл log / test.log, вы должны увидетьОткат произойдет, если это так.Вы можете посмотреть на предыдущее действие с БД, чтобы получить представление о том, какая последняя успешная операция с БД была перед ней.

Не точная наука, но может помочь вам решить, так ли это, и получить приблизительное представлениегде он пошел в сторону.

...