RSpec 子域路径测试失败

RSpec tests fails with subdomain path

我无法为 RSpec 提供带有子域的路径。 测试路径应该是api.example.com/public/v1/regions/origin?title=indm

但是我不知道如何为RSpec提供这样的路径。如何将子域 api 指向此相对路径?

let(:api_path) { 'public/v1/regions/origin?title=indm' }

log

1) Regions Public API GET /v1/regions/origin?title=? returns 200 status code
     Failure/Error: get api_path
     ActionController::RoutingError:
       No route matches [GET] "/public/v1/regions/origin"
     # ./spec/api/public/v1/regions_spec.rb:14:in `block (3 levels) in <top (required)>'

routes.rb

  namespace :api, path: '', constraints: {subdomain: 'api'} do
    namespace :public, defaults: { format: :json } do
      namespace :v1 do
        resources :regions do
          get :origin, on: :collection
          get :destination, on: :collection
        end
      end
    end
  end

我不知道解决这个问题的真正好方法,但我使用 pow 服务器和 Anvil 做到了。 我已经安装了 Anvil 和域为 orca.dev 的 运行 服务器。在此之后,我重新配置了我的 RSpec 测试路线。

spec_helper.rb

def get_api_path path, *args
  get "http://api.orca.dev#{path}", *args
end

regions_spec.rb

before do
  get_api_path '/public/v1/regions/origin?title=indm'
end

现在测试正常!