2

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

我分享了示例组:

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

在我的规范文件中:

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>>

它与'it_should_behave_like ...'一致

我试图在 spec_helper 中包含Rails.application.routes.url_helper,但它无论如何都不起作用。

顺便说一句,它可以从这样的示例中完美运行:

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

(即使没有明确包括 url_helpers)

谢谢你的帮助。

4

2 回答 2

2

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

将命名路由传递给 RSpec 中的控制器宏

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

于 2013-01-18T18:35:23.973 回答
1

在示例组中,编写Rails.application.routes.url_helpers.root_path 而不是仅root_path. 您可以创建自己的辅助方法来缩短重复调用。

于 2019-06-02T07:30:17.707 回答