【问题标题】:No route matches in Rspec RailsRspec Rails 中没有路线匹配
【发布时间】:2015-04-27 19:18:04
【问题描述】:

我使用的是 Rails 4.1,我有一个 API json,但不适用于 Rspec-Rails。

rspec-rails - 使用的版本 3.2.1

$ rake 路线

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}

有什么想法吗?

谢谢!!

【问题讨论】:

    标签: ruby ruby-on-rails-4 rspec-rails


    【解决方案1】:

    改用这个:

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

    get 方法接受控制器操作的名称,而不是路径。请参阅the documentation 了解更多信息。

    【讨论】:

    • 感谢五位,同样的错误关于没有路由匹配 {:action=>"/cities", :controller=>"cities", :code=>"DUB", :format=>:json}
    • 我回答时没有注意到这一点,但我认为您的操作实际上称为cities 而不是显示。更新我的答案。
    • 工作正常!非常感谢五位数:D
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2012-10-11
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多