2014-03-24 64 views
0

這是我的控制器的私有方法如何測試控制器私有方法

def query_url(query) 
    client_queries_path(@client, query) 
end 

,這是我使用的方法

json.array!(@queries) do |query| 
    json.extract! query, :id, :url, :keywords, :exclusions 
    json.url query_url(query, format: :json) 
end 

我想我index.json.jbuilder文件爲此編寫測試用例 - 那麼我該怎麼寫?

在此先感謝

+0

一般你不應該爲私有方法編寫測試,因爲你不應該在他們所在的模塊或類之外調用它們。所以你應該公開它並測試它,或保持私密,並使用包裝方法在外部調用它 – dax

+0

請給我例子或代碼 –

回答

1

如果你正在使用類似RSpec的,你可以調用一個私有方法與controller.send。所以在你的情況下:

controller.send(:query_url, "whatever query you want to test") 
+0

如果我想測試這個 - client_queries_path(@client,query) - 那我該怎麼辦? –

+0

測試它的功能或測試它被調用?如果是後者,只需將它存根以返回一個值並測試controller.send(...)等於存根值。 – 2014-03-24 14:18:13