命名路由作为rspec中示例组的参数

时间:2013-01-18 18:16:27

标签: ruby-on-rails rspec2 helpers

我是测试和使用RSpec的新手,需要一些帮助:

我已经分享了示例组:

shared_examples_for 'request which do something' do |opts = {}|
  respond.should redirect_to(opts[:redirect_to])
end

在我的spec文件中:

describe "behavior" do
  it_should_behave_like 'request which do something', :redirect_to => root_path
end

看起来不错,但我收到了这个错误:

Exception encountered: #<NameError: undefined local variable or method `root_path' for #<Class:0x000000069e2838>>

并指出&#39; it_should_behave_like ...&#39;

我尝试在spec_helper中包含 Rails.application.routes.url_helper ,但它仍无法正常工作。

顺便说一下,它完全适用于这样的例子:

describe "behavior" do
  it "should redirect" do
    response.should redirect_to(root_path)
  end
end

(即使没有明确包括url_helpers)

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您不能在示例组中使用路径助手,但有一种解决方法。看到这个答案:

Passing a named route to a controller macro in RSpec

有了这个,您可以传递一个符号并使用send

答案 1 :(得分:0)

在示例组中,输入Rails.application.routes.url_helpers.root_path 而不只是root_path。您可以创建自己的帮助器方法来 短打一遍。