Вы можете использовать метод controller
Rspec-rails для проверки ожидаемых сообщений на контроллерах, как описано здесь . Итак, один из способов проверить ваше create
действие таково:
describe PostsController do
it "should create a Post" do
controller.should_receive(:create).once
post :create, { :post => { :caption => "ThePost", :category => "MyCategory" } }
end
end
РЕДАКТИРОВАТЬ (аргументируя)
Возможно, вы захотите подумать, стоит ли писать тест, который зависит от реализации действия create
. Если вы тестируете что-либо кроме должных обязанностей контроллера, вы рискуете нарушить тесты при рефакторинге, и вам придется вернуться и переписать тесты при изменении реализации.
Задача действия создания состоит в том, чтобы создать что-то, поэтому проверьте это:
Post.count.should == 1
и тогда вы узнаете, было ли создано сообщение, независимо от как оно было создано.
РЕДАКТИРОВАТЬ # 2 (ум ...)
Я вижу из вашего исходного вопроса, что вы уже знаете, что Пост создается. Я по-прежнему утверждаю, что вам следует проверять поведение, а не реализацию, и что проверка того, получает ли модель сообщение, не очень хорошая вещь в тесте контроллера. Может быть, вы отлаживаете, а не тестируете?