В идеале лучше тестировать поведение, а не реализацию.Проверьте, что установлен внешний ключ, вместо того, чтобы проверять, что метод вызывается.
Хотя, если вы хотите проверить обратный вызов after_initialize
, вот способ, который работает.
obj = Model.allocate
obj.should_receive(:method_here)
obj.send(:initialize)
Allocate помещает объект в память, но не вызывает initialize
.После того, как вы установите ожидание, вы можете вызвать initialize и перехватить вызов метода.