Я использую RSpec + Shoulda для тестирования моего контроллера RESTful в Rails 3. У меня проблемы с выяснением, как проверить перенаправление действия create. Стандартный контроллер RESTful должен перенаправить действие show для нового сообщения. Например, если у меня есть ProjectsController для модели проекта, то при успешном создании это действие должно:
redirect_to project_url(@project)
Следует для этого использовать удобный макрос redirects_to. Вот что я попробовал:
describe ProjectsController, '#create' do
context "Anonymous user" do
before :each do
@attrs = Factory.attributes_for(:project_with_image)
post :create, :project => @attrs
end
it { should assign_to(:project) }
it { should respond_with(:redirect) }
it { should redirect_to(@project) }
end
end
(Да, я использую FactoryGirl, но поскольку в этом случае я использую его только для атрибутов, это не должно иметь значения. Я думаю.)
Как мне указать последний тест там? Это должно redirect_to (...) что? Я пробовал @project, project_url (@project) .. Но я не могу понять это.
Глядя на код сопоставления musta, я заметил, что сопоставитель redirect_to может принять блок. Но я не уверен, как получить доступ к недавно созданному объекту @project в этом блоке ...
Есть мысли?