2015-10-24 35 views
0

我試圖寫在Rails的一個簡單的集成測試(下面的「使用Rails 4敏捷Web開發」的建議,第13.2)沒有框架,比如水豚,RSpec等。 GET請求很簡單,並且不會產生錯誤,而POST則會造成麻煩。我有兩個模型「條目」和「項目」,其中一個項目有很多條目。我想發佈一個條目,並將相應的條目作爲參數傳遞。所以,我想以下幾點:Rails的:如何編寫正確的POST集成測試(無需特殊的測試框架)

post "/entries", entry: {item: items(:one), value: 12, date: '2015-09-15', min_quantity: 22000, max_quantity: 3000000, country_id: 1} 
assert_template :show 

這將產生:

1) Failure: 
... 
expecting <"show"> but rendering with <["entries/_form", "entries/new", "layouts/application"]> 

它告訴我,沒有進入被創造了,因爲在這種情況下,控制器重定向到新的方法(支架標準)。那麼,我怎樣才能使用POST正確地創建一個條目。一些細節:

  • 我試過,因爲在瀏覽器中離開了item: items(:one)這無須手動提交
  • 我檢查了模型 - 而事實上沒有條目創建
  • 我也產生了單元測試以檢查這個非常錄入數據,並通過爲
  • post_via_redirect確實沒有更好的

有誰看到我的問題,或者有一個整合後的測試,correspon爲例ds到一個簡單的形式,包括一個參數,它是以編程方式設置的?提前致謝!

回答

0

我終於找到了解決方案:單元測試和集成測試之間略有不同。在單元測試中,您可以在集成測試中參考item: items(:one)中的參考模型,您必須精確到item_id: items(:one).id,這是模型和數據庫中數據字段的確切名稱。 幕後的確切細節我不知道 - 也許有人可以評論和進一步啓發我。