Rspec未定义的方法`route_to'测试一条路线?

时间:2015-07-30 21:59:54

标签: ruby-on-rails ruby rspec

我是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未定义的任何想法?我已经确认该路线确实有效。

3 个答案:

答案 0 :(得分:7)

在Rspec 3中,你应该require 'rails_helper'而不是require 'spec_helper'

答案 1 :(得分:1)

基于documentation

  

路由规范由: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;

解决这些错误

  1. rspec-rails 添加到 Gemfile
  2. 运行捆绑安装
  3. require&#39; rspec / rails&#39; 添加到 spec_helper (或rails_helper)