首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Filterrific在rspec测试中失败

Filterrific在rspec测试中失败
EN

Stack Overflow用户
提问于 2018-01-30 06:07:15
回答 1查看 135关注 0票数 1

在rspec中测试一个具有文件格式的视图失败,并显示以下错误:

代码语言:javascript
复制
1) members/index renders a list of members
 Failure/Error: <%= form_for_filterrific @filterrific do |f| %>

 ActionView::Template::Error:
   No route matches {:action=>"index", :controller=>"test"}
 # /home/spfolly/.rvm/gems/ruby-2.3.0/gems/filterrific-5.0.1/lib/filterrific/action_view_extension.rb:19:in `form_for_filterrific'
 # ./app/views/members/index.html.erb:20:in `_app_views_members_index_html_erb__4554187109976153340_52575240'
 # ./spec/views/members/index.html.erb_spec.rb:42:in `block (2 levels) in <top (required)>'
 # ------------------
 # --- Caused by: ---
 # ActionController::UrlGenerationError:
 #   No route matches {:action=>"index", :controller=>"test"}
 #   /home/spfolly/.rvm/gems/ruby-2.3.0/gems/filterrific-5.0.1/lib/filterrific/action_view_extension.rb:19:in `form_for_filterrific'

控制器名称'test‘是rspec的怪癖吗?我是否需要一条“test”路径来进行文件出色的rspec测试?

如何修复此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 05:06:05

解决了。https://github.com/jhund/filterrific/issues/159

“在遇到同样的问题后,我发现可以通过存根ActionView::TestCase::TestController上的controller_name方法来解决它。

为什么: Rspec使用ActionView::TestCase::TestController作为所有视图测试的通用控制器,因此上面报告了:controller=>“测试”。(注意: Rspec确实考虑了名称空间。例如,如果您的视图位于名称空间"admin“下,则错误将显示没有与”admin/:controller=>“匹配的路由。)https://github.com/jhund/filterrific/blob/master/lib/filterrific/action_view_extension.rb#L20只是通过调用controller.controller_name来使用控制器的名称(请参阅Filterrific )。因此,在Rspec视图中,它将控制器名称设置为"test“。要让您的测试通过,您可以使用存根controller_name来返回一个不同的值。

示例:这是我如何设置Rspec视图测试的完整示例。修复这个问题只需要第一行,但我想我应该包括其余行,因为在线上似乎没有太多关于使用Filterrific的测试代码的信息。

代码语言:javascript
复制
before(:each) do
  allow_any_instance_of(ActionView::TestCase::TestController).to receive(:controller_name).and_return('members') # CUSTOMIZE THIS; Fixes the "No route matches" problem
  @filterrific = Filterrific::ParamSet.new(User, {})
  @filterrific.select_options = {
    filter_role: User.filter_role_options,
    filter_status: User.filter_status_options,
  }
  @users = [ build_stubbed(:user) ]
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48510792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档