Бросок ActiveRecord :: Откат работает, но не в тестах.
Раньше у меня была эта проблема, сейчас она возникает снова, и по какой-то причине не могу найти записи о ком-то еще, кто имел эту проблему.
Это связано с тем, что тесты выполняют откат каждый раз, когда выполняется тест, и большинство баз данных не поддерживают вложенные откаты. Однако я не могу быть единственным человеком с контрольными примерами, которые включают откат транзакции, поэтому, возможно, я делаю что-то не так.
Следующий тестовый пример не пройден (используется библиотека musta, хотя тот же тест не пройден с базовым Test :: Unit):
require 'test_helper'
class RollbackTest < ActiveSupport::TestCase
context "create a record and throw rollback" do
setup do
User.transaction do
User.create!
raise ActiveRecord::Rollback
end
end
should_not_change("count of users") { User.count }
end
end
однако на консоли:
?> User.transaction do
?> User.create!
>> raise ActiveRecord::Rollback
>> end
=> nil
>> User.count
=> 4
>> User.transaction do
?> User.create!
>> raise ActiveRecord::Rollback
>> end
=> nil
>> User.count
=> 4