2011-07-08 127 views
7

下產生一個錯誤:「未定義的局部變量或方法`PARAMS'」如何在Rails測試中測試params哈希值?

assert_equal params[:recipient_id], users(:one).id

你怎麼測試params哈希表?

另外,當有參數存在時,如何測試assert_redirect?這些參數會附加到URL中,因此對model_path或類似的測試失敗。

與內置的測試類工作中的Rails 3

+0

@B Seven:你爲什麼要測試params散列表中存在的內容?我知道,這是一個令人討厭的問題,但對於我來說,想要測試這樣的事情似乎很奇怪。更重要的是控制器正在檢索正確的對象。 – Samo

+0

@Samo我不確定這是否是一個有效的原因,但我有一個合併時間字段和日期字段(我把它們作爲單獨的字段)的控制器操作,並且在出現錯誤的情況下,確保這些字段沒有被合併,因此它們在用戶看來是最初發送的。你對此有何想法? –

回答

7

http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers給出了一些這方面的信息。

在這種情況下,params被附加到@request@response對象(取決於您正在測試的HTTP方法),因此您可以將其引用爲@request.params[:recipient_id]

重定向: assert_redirected_to post_path(assigns(:post))將斷言您將被重定向到給定模型的正確路徑。 Assigns方法應該有你在控制器內部設置的實例變量傳遞給視圖