2011-05-09 101 views
13

我試圖用rspec測試路由。以下給出「預期的塊返回真值」的錯誤。使用rspec測試嵌套路由

我不知道我缺少什麼。通過瀏覽器,我可以發佈到這個網址,它是成功的。

任何想法?謝謝!

路線

resources :forum_topics do 
    resources :forum_sub_topics 
end 

測試:

it "recognizes and generates nested #create" do 
    { :post => "/forum_topics/1/forum_sub_topics" }.should route_to(:controller => "forum_sub_topics", :action => "create", :forum_topic_id => 1) 
end 
+0

嘗試使用'-b'選項運行'rspec'來獲取錯誤的回溯。 – 2011-05-09 00:17:26

+3

我不認爲':forum_topic_id'實際上是一個整數。嘗試':forum_topic_id =>'1'' – 2011-05-09 04:13:27

+0

Rob S有確切的答案,我會嘗試-b以及爲了好玩。 – 2011-05-09 04:29:52

回答

10

那麼沒有人正式回答我的問題,所以我會:)

{ :post => "/forum_topics/1/forum_sub_topics" }.should route_to(:controller => "forum_sub_topics", :action => "create", :forum_topic_id => 1) 

它歸結爲:forum_topic_id => 1不等於:forum_topic_id =>「1」也許我的PHP日子已經爬上咬我。字符串和整數:)

+1

同上這個php對我來說。謝謝。 – 2011-10-01 05:24:12

+0

當我這樣做時,id(1)需要是一個字符串「1」 – 2012-11-28 06:02:59

+0

如果它是正確的,你應該接受你的答案:) – Rimian 2013-05-13 05:04:41

8

我知道它歸結爲同樣的事情,但如果你想縮短代碼,你也可以這樣做:

{ :post => "/forum_topics/1/forum_sub_topics" }.should route_to("forum_sub_topics#create", :forum_topic_id => 1) 

我覺得更容易閱讀。

+0

這實際上對我有效,而不是@recursive_acronym的答案。遞歸的答案似乎看着父控制器。無論如何,感謝您的信息! – 2013-05-09 11:47:53