【问题标题】:RSpec: How to test a helper method that calls a private helper method from the controller?RSpec:如何测试从控制器调用私有辅助方法的辅助方法?
【发布时间】:2011-08-03 08:21:51
【问题描述】:

这是我所拥有的:

从它调用控制器帮助器方法(私有)的应用程序帮助器方法。

代码:

应用程序助手:

def ordenar(coluna, titulo = nil)  
    titulo ||= coluna.titleize  
    css_class = (coluna == **coluna_ordenacao**) ? "#{**direcao_ordenacao**}" : "ordenavel"  
    direcao = (coluna == **coluna_ordenacao** and **direcao_ordenacao** == "asc") ? :desc : :asc  
    link_to titulo, {:sort => coluna, :direction => direcao}, {:class => css_class}  
end  

应用控制器:

helper_method :coluna_ordenacao, :direcao_ordenacao  
private  
def coluna_ordenacao  
    return params[:sort] if params[:sort] and params[:sort].split(' ').size == 1  
    return :created_at  
end  

def direcao_ordenacao  
    return %w[asc desc].include?(params[:direction]) ? params[:direction] : :desc  
end  

这就是问题所在:无法从 RSpec 调用 coluna_ordenacaodirecao_ordenacao 方法,它给了我以下错误:

undefined local variable or method `coluna_ordenacao' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2:0x7fbf0a9fe3d8>

有什么方法可以实现吗?顺便说一句,我正在测试助手,而不是控制器

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 testing rspec


【解决方案1】:

您可以使用 .send(:private_methods_name) 在测试中访问私有方法

see documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多