簡體   English   中英

Rails控制器中的功能測試重定向

[英]Functional testing redirection in a Rails controller

我正在嘗試使其通過創建的動作創建模型時將其重定向到其show動作。 那部分工作正常,但是我無法執行功能測試。 這些測試已從腳手架提供的內容進行了修改。

  def setup
    @thing = Factory(:thing)
    assert(@thing.id, "Virtual fixture not valid.")
  end

  def test_create_valid
    Thing.any_instance.stubs(:valid?).returns(true)
    post :create
    assert_redirected_to @thing
  end

我在安裝程序中使用factory_girl。 當我運行測試時,我得到以下信息:

預期的響應是重定向到http://test.host/thing/2,但重定向到http://test.host/thing/3

我在此控制器中執行了與更新操作非常相似的操作,並且測試看起來相同,但是可以正常工作。 我對發生的事情有些困惑。

編輯 :Maximiliano在下面指出,這可能是因為這在數據庫中創建了一條新記錄,因此將其重定向到該記錄。 如何找到通過創建發布請求剛創建的新記錄?

在Max(感謝!)的幫助下弄清楚了它,要獲取在數據庫中創建的對象,我必須使用assigns():

assert_redirected_to分配(:thing)

免責聲明:(我還沒有用過工廠女工...所以拿些鹽吃)您的工廠不是在創建數據庫記錄嗎? 如果是這樣,您將創建兩次,一次是在工廠,一次是在控制器。 那么正常情況下,新記錄的ID與工廠的ID不同...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM