2016-05-03 20 views
0

我有我的API的2個版本(1 & 2)api版本2的控制器從api版本1的控制器繼承。問題是,版本1的規格運行良好,但是當我運行在第2版規範,它告訴我沒有路由匹配的繼承(創建)動作

ActionController::UrlGenerationError: No route matches {:action=>"create", :controller=>"api/mobile/v2/samples"}

#version 1 
class Api::Mobile::V1::SamplesController < ApplicationController 
    def create 
    #dummy 
    end 
end 

#version 2 
require "meta_data" 
class Api::Mobile::V2::SamplesController < Api::Mobile::V1::SamplesController 
    include MetaData 
end 


#spec for version 1 
require 'rails_helper' 
RSpec.describe Api::Mobile::V1::SamplesController, type: :controller do 
    describe "POST #create" do 
    it "performs a post" do 
     post :create 
    end 
    end 
end 

#spec for version 2 
require 'rails_helper' 
RSpec.describe Api::Mobile::V2::SamplesController, type: :controller do 
    describe "POST #create" do 
    it "performs a post" do 
     post :create 
    end 
    end 
end 
+0

你的路線中是否有類似以下內容? 'namespace:api do namespace:mobile do namespace:v2 resources:samples end end end' –

+0

是的,該應用程序工作正常。這只是我無法啓動和運行的測試。 – simon

回答

0

RSpec的是尋找SamplesController(複數)。確保你使用單數resource來指定你的路線,如果這是你的。否則,在初始化器中指定複數形式samplesample

我只想用流和用戶複數形式。但是,顯然,使用公共API是一件非常頭疼的事情。

+0

Sry,這只是我的示例代碼中的一個複製和粘貼錯誤。我編輯了代碼。 – simon

+0

您是否在'routes.rb'中爲v2定義了新路線? – Uzbekjon

+0

是的,該應用程序工作正常。這只是我無法啓動和運行的測試。 – simon