2
我正在使用RSpec + Shoulda在Rails 3中測試我的RESTful控制器。我在計算如何測試創建動作的重定向時遇到困難。標準的RESTful控制器應該重定向到新帖子的顯示操作。舉例來說,如果我有一個ProjectsController的項目模型,然後在成功創建,該行動應:使用Shoulda redirect_to來測試控制器的創建動作
redirect_to project_url(@project)
早該提供了處理這一個方便redirects_to宏。這是我曾嘗試:(是的,我使用的FactoryGirl,但由於我只使用它在這種情況下的屬性,它不應該的問題,我認爲)
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
如何指定那裏的最後一次測試?它應該redirect_to(...)是什麼?我已經嘗試了@project,project_url(@project)..但我無法弄清楚。
看着Shoulda matcher代碼,我注意到redirect_to匹配器可以接受一個塊。但我不知道如何訪問該塊中新創建的@project對象...
有什麼想法?
謝謝!指派[:項目]做到了。我不知道如何從控制器訪問分配的變量。 – Rick 2011-02-14 04:11:55