2014-03-24 25 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