我是Rspec的新手,我正在尝试在我的应用程序中测试一条路线。我已经安装了Rspec并在spec/routing/routes_spec.rb
中包含了路由文件。
我的规格如下:
require "spec_helper"
describe "Routes" do
it "routes get index" do
expect(:get => "simulations").to route_to(
:controller => "simulations",
:action => "index"
)
end
end
我收到此错误:
Routes routes get index
Failure/Error: expect(:get => "simulations").to route_to(
NoMethodError:
undefined method `route_to' for #<RSpec::ExampleGroups::Routes:0x007fc32d2f70b8 @__memoized=nil>
# ./spec/routing/routes_spec.rb:6:in `block (2 levels) in <top (required)>'
关于为什么route_to
未定义的任何想法?我已经确认该路线确实有效。
答案 0 :(得分:7)
在Rspec 3中,你应该require 'rails_helper'
而不是require 'spec_helper'
。
答案 1 :(得分:1)
路由规范由
:type => :routing
标记,或者您已将config.infer_spec_type_from_file_location!
设置为 spec / routing 。
因此,除非您设置上一个选项,否则您应该使用以下命令开始您的规范:
describe "Routes", :type => :routing do
答案 2 :(得分:1)
正如Fire-Dragon-DoL建议的那样,您可能想检查一下rspec-rails gem是否到位。
如果您没有安装和需要rspec-rails,并且使用 to_route 方法,则在运行规范时会出现相同的错误: NoMethodError:undefined method& #39; route_to&#39;
鉴于相同的设置,当您使用 be_routable 匹配器时,您会收到另一个错误,其格式为: expected {:get =&gt;&#34; / my_models /}回应可路由的?&#39;
解决这些错误