2013-01-23 69 views
1

我測試使用RSpec的在我的Rails 3.2的應用程序我的路線簡單的GET請求。由於所有請求都是獲取請求,並且都只有與視圖名稱相似的不同操作名稱,因此對於每個獲取請求手動編寫不同的測試都是重複的。動態方法調用符合規範

相反,我想拿出這樣的:

%(action_1 action_2 action_3 action_4).each do |action| 
    it "routes to the #{action} page" do 
     get("liver_diseases#{action}_path").should route_to("liver_diseases##{action}") 
    end 
end 

它無法在這個僞代碼:get("liver_diseases_#{action}_path") 所以我需要做的是一個動態的方法調用 - 但我已經找到了,這將涉及.send(:method_name),爲此我需要知道類名。我找不到那個。

我需要什麼,這個方法調用做的工作?

回答

1

將涉及。發送(:METHOD_NAME),爲此,我需要知道 類名

當接收器丟失,它總是self。在控制器示例的上下文中,self應該是一個控制器實例。所以,你應該能夠得到與路徑:

send "liver_diseases_#{action}_path" 

這應該是等同於:

controller.send "liver_diseases_#{action}_path" 
+1

對於@查爾斯的特殊需要:'得到(發送( 「程序hello_world#{行動} _path」)應該等等。 –

+0

太棒了,謝謝你們兩位! – weltschmerz