Заставьте RSpec уничтожать записи, а не удалять их - PullRequest
0 голосов
/ 18 ноября 2011

В моем приложении есть модель, которая имеет методы after_create и after_destroy, которые создают каталог и затем уничтожают его соответственно в файловой системе.

Я заметил в своих спецификациях запроса RSpec, что создаются записи модели (находят каталоги), но я предполагаю, что записи просто удаляются после каждой спецификации, а не уничтожаются, поэтому вместо этого каталоги остаются без изменений. быть удаленным. Или это или, возможно, RSpec просто откатывает транзакцию базы данных по всей спецификации?

Мой вопрос: как я могу заставить RSpec безопасно уничтожать эти записи, чтобы файловая система оставалась синхронизированной?

Я пробовал:

after(:each) do
  Entity.destroy_all
end

и это работает, но я не уверен, что это лучший способ.

Возможно, я мог бы сделать это лучше в самой моей модели, чтобы, если я обнаружу откат транзакции, я тоже мог удалить каталог? Я никогда не слышал об этой функциональности, хотя bar, возможно, в блоке begin rescue ensure.

Какие-нибудь советы?

1 Ответ

1 голос
/ 05 января 2012

Оказывается, что вы можете отключить транзакции для определенных спецификаций, подобных тем, которые должны полностью добавить запись и выполнить определенные после обратных вызовов. Я также изменил after_create на after_commit (: on =>: create) (не уверен на 100% в синтаксисе, просто извлекая его из памяти) для добавления и удаления элементов файловой системы, потому что это самый безопасный способ убедиться, что запись существует в базы данных перед внесением изменений в файловую систему.

...