ruby-on-rails - RSpec:如何测试从 Controller 调用私有(private)辅助方法的辅助方法?

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

这是我所拥有的:

从中调用 Controller 辅助方法(私有(private))的应用程序辅助方法。

代码:

应用程序助手:

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  

应用程序 Controller :

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  

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

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

有什么方法可以让它起作用吗?顺便说一句,我正在测试助手,而不是 Controller

最佳答案

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

see documentation

关于ruby-on-rails - RSpec:如何测试从 Controller 调用私有(private)辅助方法的辅助方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626530/

相关文章:

ruby-on-rails-3 - 删除 Carrierwave 以前上传的文件会扰乱新文件处理

ruby-on-rails-3 - :has_many :through associations two levels deep

Ruby:Titleize:如何忽略较小的词,如 'and' 、 'the' 、 'or 等

ruby-on-rails - 如何处理非模型 Rails 表单中的日期字段?

javascript - ruby on rails javascript_include_tag :defaults

ruby-on-rails - Rails 重定向是 GET 或 POST

ruby - YAML/ ruby : Get the first item whose <field> is <value>?

jquery - GON - 在 js.erb + Rails 5 中没有获得值(value)

ruby-on-rails - OAuth 提供者服务和 Rails 3

ruby-on-rails - 如何调试 Rails 中的 Trace/BPT Trap 错误?