2010-04-15 21 views
1

通常通過測試在RSpec中,我們做傳遞參數時,直接傳遞參數給控制器#方法:通過RSpec的

params[:my_key] = my_value 
get :my_method 

my_method涉及從什麼PARAMS收到。但在我的控制器我有一個方法,這需要ARGS直接即:

def my_method(*args) 
    ... 
end 

我如何打電話與ARGS的方法從測試中?我試過get :my_method(args),但Ruby解釋器抱怨語法錯誤。

回答

3

據我所見,你不能那樣做。如果需要直接測試my_method,可以將my_method提取到幫助程序或庫中,然後使用Rspec進行測試。或者你可以構建你的控制器測試,以使my_method中的代碼作爲控制器動作的一部分被執行,控制器動作可以被標準HTTP動詞之一(get,post,put,delete)調用。

最終它必須能夠通過設置與get,post等測試,您的控制器使用任何代碼,否則Rails無法做到這一點,你的應用程序將無法正常工作。這可能會使測試不方便,但它也可能會告訴你,my_method會比控制器更好。