使用提示here我在辅助模块中构建了一个方法,如下所示:
describe ExampleHelper do
def build_link
link_to "RSS feed", params.merge(:format => :rss), :class => "feed_link"
end
end
但是,当我测试此方法时,我收到以下错误:
Failure/Error: subject { helper.build_link }
ActionController::UrlGenerationError:
No route matches {:action=>"index", :foo=>"bah", :foobah=>["1", "2", "3"], :results_per_page=>"25"}
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionpack-4.2.6/lib/action_dispatch/journey/formatter.rb:46:in `generate'
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:721:in `generate'
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:752:in `generate'
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:799:in `url_for'
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionpack-4.2.6/lib/action_dispatch/routing/url_for.rb:156:in `url_for'
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionview-4.2.6/lib/action_view/routing_url_for.rb:94:in `url_for'
# /Users/tombrammar/.rvm/gems/ruby-2.1.10@example/gems/actionview-4.2.6/lib/action_view/helpers/url_helper.rb:181:in `link_to'
似乎因为我在帮助器中测试它无法确定使用什么控制器,因此无法确定如何构建URL。
任何人都可以帮我理解如何解决这个问题吗?即也许我可以将控制器存放到助手rspec?
答案 0 :(得分:1)
如果你使用上面的参数,这是一个肮脏的技巧。
allow(helper).to receive(:params).and_return(_recall: { controller: 'homes' })
另外,这是另一种方法,可以快速完成工作。