Rspec Rails 中没有匹配的路线

No route matches in Rspec Rails

我正在使用 Rails 4.1,我有一个 API json,但在 Rspec-Rails 上不起作用。

rspec-rails - 使用的版本 3.2.1

$ 佣金路线

GET  /cities/:code(.:format)     cities#show

cities_controller.rb

class CitiesController < ApplicationController
  respond_to :json
  def show
    code = params[:code]
    respond_with City.find_by_code(code)
  end
end

cities_controller_spec.rb

require 'rails_helper'

RSpec.describe CitiesController, :type => :controller do
  describe "GET city" do
    it "should be ok" do
      get '/cities', :code => 'DUB', :format => :json
      expect(response).to be_success
      expect(response).to have_http_status(200)
    end
  end
end

当我执行rspec时,我收到这个

Failure/Error: data = get '/cities', :code => 'DUB', :format => :json
     ActionController::UrlGenerationError:
       No route matches {:action=>"/cities", :controller=>"cities", :code=>"DUB", :format=>:json}

有什么想法吗?

谢谢!!

改用这个:

get :show, :code => 'DUB', :format => :json

get 方法接受控制器动作的名称,而不是路径。有关详细信息,请参阅 the documentation