【发布时间】:2012-10-18 11:47:18
【问题描述】:
我最近通过当前应用程序升级到 Rails 3.2.8 并且无法通过一些测试。我做了一个辅助方法,将某些哈希与参数哈希合并并创建到当前页面的链接。我使用了我看到的技术:link_to the current page plus/merged with a param。
这是一个精简版:
def simple_link
link_to "Page", params.merge(:c => nil)
end
然后我会用类似的东西来测试它:
describe "simple_link" do
it { simple_link.should == "<a href=\"/assets\">Page</a>" }
end
这是在 3.2.6 中传递的。
但是,现在我收到 rspec 错误 No route matches {:c=>nil}。 Rails、rspec 或 capybara 都认为哈希是路由。如果我添加正确的路由,例如:users_path,那么 url_for 似乎会获取哈希值。在浏览器上测试,一切正常,没有错误。是我做错了什么,是 3.2.8 中的某些内容发生了变化还是这是一个错误?
【问题讨论】:
-
精简代码对我们没有帮助。
-
我从作为我真正的帮助方法提供的代码中得到了同样的错误。
-
可能相关?:github.com/rails/journey/issues/42 虽然这发生在我将 升级到 rails 3.2.6 时。这个解决方案(至少对我而言)是在我的 Gemfile 中添加一行:
gem 'journey', '1.0.3'将旅程设置回 v. 1.0.3。 -
这看起来和我遇到的问题一样。但是,3.2.8 取决于旅程 1.0.4。所以,我要么必须使用 rails 3.2.6,要么就忍受它。可能会忍受它。谢谢
-
但是您之前使用的是 Journey 1.0.3 还是 1.0.4?如果您使用的是 1.0.3,那么这可以解释为什么它现在出现了,但如果您使用的是 1.0.4,那么它一定是别的东西。
标签: ruby-on-rails rspec ruby-on-rails-3.2 capybara