Во-первых
Если все, что вы пытаетесь сделать, это утверждать, что для вашей ассоциации установлена опция touch: true
, то вы можете просто сделать следующее:
describe Post do
it { should belong_to(:discussion).touch(true) }
end
Во-вторых
Для тестирования обратных вызовов в целом, читайте дальше.
Все остальные ответы здесь имеют два недостатка:
Они требуют попадания в базу данных, что может быть медленным.
Они не определяют , какой обратный вызов вызывается во время save!
Вместо этого используйте Маттеры обратного вызова Ifa , который не требует обращения к базе данных, и вы можете указать, какой обратный вызов вы проверяете на наличие.
Установка
Установка Маттеров обратного вызова Следует в с Bundler:
group :test do
gem "shoulda-callback-matchers", "~> 1.0"
end
Использование
it { should callback(:some_method).after(:save) }
Спасибо Удар за написание этой замечательной библиотеки.