2

路线:

Users::Engine.routes.draw do
  get "test/step1", to: "test#step1", as: "step1"
  get "test/step2", to: "test#step2", as: "step2"
end

控制器规格:

describe Users::Test do
  it "sample" do
    get :test2, use_route: "users"
    response.should redirect_to users.step1_path
  end
end

耙路线:

Routes for Users::Engine:
  step1 GET    /test/step1(.:format)                    users/test#step1
  step2 GET    /test/step2(.:format)                    users/test#step2
....

我有错误:

Failure/Error: response.should redirect_to users.step1_path
     NameError:
       undefined local variable or method `users' for #<RSpec::Core::ExampleGroup::Nested_9::Nested_3:0xb7496f8>

如何使用users.step1_path控制器规范中的引擎路径助手?

4

2 回答 2

3

我正在使用 Rails 4 和 Rspec 3。我通过在规范中包含路由助手来使其工作,如下所示:

describe Users::Test do

  include Users::Engine.routes.url_helpers

  it "sample" do
    get :test2
    response.should redirect_to step1_path
  end

end
于 2014-10-28T21:18:47.187 回答
2

您的 RSpec 路由需要设置为引擎路由集,而不是引擎控制器测试的默认全局 Rails.routes。

describe Users::Test do

  routes { Users::Engine.routes }

  it "sample" do
    get :test2
    response.should redirect_to step1_path
  end

end
于 2014-02-02T20:49:06.003 回答