2016-09-29 15 views
1

Request Rspec内に未処理のJSONを送信しようとしています。 (コントローラーRspecで試したので、JSONデータは4.2で解析されていません) サブドメインを設定しましたapiRSpecリターン404;サブドメインにJSONデータで投稿する

私はいつも404を取得します。

describe "POST #create" do 
    let(:json_body) do 
     '{"foo":"foo_value", "bar":"bar_value", "baz":"baz_value"}' 
    end 
    it "returns not acceptable to non json content-type request" do 
     post "/subscriptions" , json_body, { 'CONTENT_TYPE' => 'application/json', 'ACCEPT' => 'application/json' } 
    end 

これを修正するアイデアはありますか?

UPDATE

config/routes.rb

require 'api_constraints' 

Rails.application.routes.draw do 
    namespace :api, defaults: { format: :json }, constraints: { subdomain: 'api' }, path: '/' do 
    scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do 
     resources :subscriptions, only: [:index, :new, :create] 
    end 
    end 

end 

アップデート2

私はhost! 'api.localhost.local'を設定し、それは動作します。 参考:https://github.com/rspec/rspec-rails/issues/1662 Ref2の:http://www.screencast.com/t/nyZ2jKQi

Rspec.configure do |config| 
    config.before(:all, type: :request) do 
    host! 'api.lvh.me' 
    end 
end 

また、私は、私はサブドメインで、このようなルートを設定し、なぜ一度疑問、それはルート<subdomain_name>.localhost.local:3000デフォルトとして?

+0

json_bodyを '{foo::foo、bar::bar}'とするとどうなりますか? –

+0

routes.rb、コントローラの特定の部分とサブドメインの設定方法を投稿できますか? – slowjack2k

+0

'{'Content-Type' => 'application/json'、 'Accept' => 'application/json'}' – zetetic

答えて

0
require 'rails_helper' 

RSpec.describe Api::V1::SubscriptionsController, type: :request do 
    let(:json_body) do 
    '{:foo: 12, bar: 33}' 
    end 
    it "returns not acceptable to non json content-type request" do 
    host! 'api.lvh.me' # <= This is needed because 'api' is the subdomain. 
    headers = { 
     "ACCEPT" => "application/json",  # This is what Rails 4 accepts 
     'CONTENT_TYPE' => 'application/json' 
    } 

    post "/subscriptions", json_body.to_json ,headers 
    end 
end 
関連する問題