1)示例路由的ExampleController路由 失败/错误:期待(发布:' / api / application')。到route_to(格式:' json',操作:' create_application',控制器:&# 39;实施例') 已识别的选项< {"格式" =>" json","操作" =>" create_application","控制器" = GT;"例如"}>没有 匹配< {"格式" =>" json","操作" =>" create_application", " controller" =>"示例"}>,
差:
< {"格式" =>" json","行动" =>" create_application", "控制器" = GT;"例如"}>
预计但是
< {"格式" =>" json","行动" =>" create_application", "控制器" = GT;"例如"}>
我在这里遗漏了什么吗?我觉得好像预期和实际是一样的。
@charles
routes.rb中:
scope '/api', :defaults => { format: 'json' } do
resource :application, only:[] do
post :create, to: 'example#create_application'
end
end
rake routes:
应用程序POST /api/application(.:format)示例#create_application {:格式=>" JSON"}
现在使用:
describe "routes for Example" do
it "routes" do
expect( post: '/api/application').to route_to( "example#create_application", :format=>"json" )
end
end
答案 0 :(得分:0)
我有同样的问题。
你只需要在route_to函数中添加hash,如。
it 'routes to /v1/auth to user_token#create' do
expect(:post => '/v1/users/auth.json').to route_to({"format"=>"json", "controller"=>"v1/sessions", "action"=>"create"})
end
如上所述。
答案 1 :(得分:0)
我遇到了同样的问题。
我的控制器是:api/v1/users
我的路线被定义为:
Rails.application.routes.draw do
namespace :api, defaults: { format: :json } do
namespace :v1 do
resources :users
end
end
end
我是这样定义我的规范路线的:
RSpec.describe Api::V1::UsersController, type: :routing do
describe "routing" do
it "routes to #index" do
expect(get: "api/v1/users").to route_to(controller: :api/v1/users, action: :index)
end
end
end
但是每次我遇到错误:
<块引用>识别的选项 <{"format"=>"json", "action"=>"index", "controller"=>"api/v1/users"}> 与 <{"action"=> 不匹配“索引”,“控制器”=>“api/v1/users”}>
这是我修复它的方法:
我只是修改了规范路线:
RSpec.describe Api::V1::UsersController, type: :routing do
describe "routing" do
it "routes to #index" do
expect(get: "api/v1/users").to route_to(controller: :api/v1/users, action: :index)
end
end
end
为此:
RSpec.describe Api::V1::UsersController, type: :routing do
describe "routing" do
it "routes to #index" do
expect(get: "api/v1/users").to route_to(format: :json, controller: "api/v1/users", action: "index")
end
end
end
仅此而已。
我希望这会有所帮助