Ruby on rails Rspec路由匹配-预期与实际相同,但存在错误
1) 示例控制器路由示例路由 失败/错误:预期(post:'/api/application')。将_路由到(格式:“json”,操作:“创建_应用程序”,控制器:“示例”) 识别的选项“json”、“action”=>“create_application”、“controller”=>“example”}>没有显示 匹配“json”,“操作”=>“创建应用程序”, “控制器”=>“示例”}> 差异: “json”,“操作”=>“创建应用程序”, “控制器”=>“示例”}> 预料之中,但事实并非如此 “json”,“操作”=>“创建应用程序”, “控制器”=>“示例”}> 我是不是遗漏了什么?我觉得预期的和实际的是一样的 @查尔斯 routes.rb:Ruby on rails Rspec路由匹配-预期与实际相同,但存在错误,ruby-on-rails,json,rspec,Ruby On Rails,Json,Rspec,1) 示例控制器路由示例路由 失败/错误:预期(post:'/api/application')。将_路由到(格式:“json”,操作:“创建_应用程序”,控制器:“示例”) 识别的选项“json”、“action”=>“create_application”、“controller”=>“example”}>没有显示 匹配“json”,“操作”=>“创建应用程序”, “控制器”=>“示例”}> 差异: “json”,“操作”=>“创建应用程序”, “控制器”=>“示例”}> 预料之中,但事实并
scope '/api', :defaults => { format: 'json' } do
resource :application, only:[] do
post :create, to: 'example#create_application'
end
end
耙道:
应用程序POST/api/应用程序(:格式)示例#创建#应用程序
{:format=>“json”}
现在与以下方面合作:
describe "routes for Example" do
it "routes" do
expect( post: '/api/application').to route_to( "example#create_application", :format=>"json" )
end
end
我也有同样的问题 您只需要在route_中添加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
如上所述 我也有同样的问题
我的控制器是: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
但每次我遇到错误时:
识别的选项“json”、“action”=>“index”、“controller”=>“api/v1/users”}>与“index”、“controller”=>“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
就这些
我希望这会有所帮助您能向我们展示您的路由文件中的相关部分以及运行rake路由时的相关部分吗?上面添加了。谢谢Charles。如果您更改为
expect(post:'/api/application.json')
,它通过了吗?这也是我最好的猜测。