我是rails新手,我正在使用unit:test。我有一個動作在我的控制器如何在rails 3.1和unit中編寫功能測試用例:test
def save_campaign
unless params[:app_id].blank?
@app = TestApp.find(params[:app_id])
if params[:test_app]
@app.update_attributes(params[:test_app])
end
flash[:notice] = "Your Registration Process is completed"
redirect_to "/dashboard"
else
redirect_to root_path
end
end
和我的測試情況如下
test "should save campagin " do
assert_difference('TestApp.count', 0) do
post :save_campaign, test_app: @test_app.attributes
end
assert_redirected_to "/dashboard"
end
end
這種方法是POST方法。當運行這個測試,它失敗並顯示我的消息
「應該保存campagin(0.07s) 期望的迴應是一個重定向到http://test.host/dashboard但被重定向到http://test.host/ /home/nouman/.rvm /gems/[email protected]/gems/actionpack-3.1.3/lib/action_dispatch/testing/assertions/response.rb:67:in`assert_redirected_to」
我的猜測是,我我沒有給它正確的斷言檢查參數
params [:app_id]和@app = TestApp.find(params [:app_id])。
我該如何編寫這樣的斷言來檢查這些屬性,檢查一個參數是否爲空。如何找到一個給定ID的對象。
感謝忠爲回答,對不起,我沒有意識到你的迴應,這就是爲什麼在幾個月後接受它。 – user1014473 2012-08-03 11:21:21