使用 RSpec 测试单一资源控制器
Testing singular resource controller with RSpec
我在我的 routes.rb
中定义了一个单一资源,它看起来像这样
Rails.application.routes.draw do
resource :dog, only: [:create], to: "dog#create", controller: "dog"
end
之后我用这样的创建操作定义了一个控制器
class DogController < ApplicationController
def create
render json: {}, status: :ok
end
end
现在我正在尝试用 RSpec 来测试它
require "rails_helper"
describe DogController do
it "works" do
post :create, params: { foo: :bar }
end
end
这是抛出错误而不是传递:
ActionController::UrlGenerationError:
No route matches {:action=>"create", :controller=>"dog", :foo=>:bar}
我做错了什么?
将您的路线更改为
resource :dog, only: [:create], :controller => "dog"
最好使用多个控制器,即使它是一个单一的资源
http://edgeguides.rubyonrails.org/routing.html#singular-resources
您的创建操作没有接受任何参数。它只是渲染 json 并返回一个状态码
我在我的 routes.rb
中定义了一个单一资源,它看起来像这样
Rails.application.routes.draw do
resource :dog, only: [:create], to: "dog#create", controller: "dog"
end
之后我用这样的创建操作定义了一个控制器
class DogController < ApplicationController
def create
render json: {}, status: :ok
end
end
现在我正在尝试用 RSpec 来测试它
require "rails_helper"
describe DogController do
it "works" do
post :create, params: { foo: :bar }
end
end
这是抛出错误而不是传递:
ActionController::UrlGenerationError:
No route matches {:action=>"create", :controller=>"dog", :foo=>:bar}
我做错了什么?
将您的路线更改为
resource :dog, only: [:create], :controller => "dog"
最好使用多个控制器,即使它是一个单一的资源
http://edgeguides.rubyonrails.org/routing.html#singular-resources
您的创建操作没有接受任何参数。它只是渲染 json 并返回一个状态码