【问题标题】:Rspec 3 view spec undefined method for custom helperRspec 3查看自定义帮助器的规范未定义方法
【发布时间】:2016-10-22 11:02:16
【问题描述】:

我在帮助模块中有一个自定义表单构建器方法。

module MediaHelper
  class CustomFormBuilder < ActionView::Helpers::FormBuilder
    ... 
  end

 def custom_form_for(data, *args, &proc)
  options = args.extract_options!
  form_for(data, *(args << options.merge(builder:
  MediaHelper::CustomFormBuilder)), &proc)
 end
end

这适用于 &lt;= custom_form_for(media) do |f| %&gt; 的视图

但是它破坏了 RSpec 3 中的视图规范,我收到了错误消息

ActionView::Template::Error: undefined method custom_form_for' for #&lt;#&lt;Class:0x007fea32454ce0&gt;:0x007fea34064f98&gt;

渲染时

是否可以包含助手?

【问题讨论】:

  • 您究竟是如何看到此错误的?什么时候运行规范?
  • 是的,当规范运行时,它会渲染视图并收到此错误。

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


【解决方案1】:

可以使用helper(&lt;module&gt;) 将自定义助手包含在视图规范中

在我的情况下的视图规范:

RSpec.describe 'media_items/new', type: :view do
    helper(MediaHelper)
end

当在规范中调用render 时,它会正确地使用&lt;= custom_form_for(media) do |f| %&gt; 渲染视图

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多