繁体   English   中英

在rspec测试中调用Rails.application.routes.recognize_path与Rails 3中的任何路由都不匹配

[英]Calling Rails.application.routes.recognize_path within an rspec test does not match any route in Rails 3

我正在处理的Rails 3应用程序包含一些调用以下代码的逻辑(我无法更改):

Rails.application.routes.recognize_path("/customers", :method => :get)

“/ customers”当然是可变的。

我正在编写一个关联的Rspec测试,它调用包含所述逻辑的代码,并且测试具有完整的Rails环境。 当我提出以下内容时:

Rails.application.routes.routes.inspect

它包含正确的路线(例如,其中一条路线是“GET / customers”)。

当我然后运行测试时,逻辑结果为:

No route matches "/customers"

执行以下操作:

@routes = Rails.application.routes
assert_recognizes({:controller => "customers", :action => "index"}, "/customers")

导致相同的错误。

在辅助测试中,以下内容:

# this succeeds and returns "/customers"
x = helper.customers_path
Rails.application.routes.recognize_path(x, :method => :get)

导致再次出现相同的错误(没有路由匹配“/ customers”)

我100%肯定Rails.application.routes包含正确的路由。

有谁知道这是什么原因?

谢谢!

终于遇到了这个愚蠢的自我诱导错误的原因:忘了定义路由映射到的CustomersController。

在深入了解Rails的源代码后发现路由实际上是映射到映射到路由的控制器,因此在您的规范中需要一个映射到的实际控制器。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM