2017-11-23 5 views
0

認証のために外部API(ExAPI)に接続するAPI(MyAPI)を構築しました。VCR for Railsを使用してuse_casseteスコープ内にリクエストが入っていないカセットを再生する

ユーザーは認証が必要なすべての要求に対して、トークンを含むCookieを送信し、トークンをExAPIに送信してユーザー情報を取得します。

私はこの要求にcasseteを記録しました:私はuser_storiesへの呼び出しを行う場合

describe 'VCR-RSpec integration' do 
    def make_http_request 
    connect = Faraday.new(url: (ENV['EX_API']).to_s) do |faraday| 
     faraday.request :url_encoded 
     faraday.response :logger 
     faraday.adapter Faraday.default_adapter 
    end 
    connect.authorization :Bearer, ENV['USER_TOKEN'] 
    connect.get('/auth/...') 
    end 

    skip 'without an explicit cassette name' do 
    it 'records an http request' do 
     VCR.use_cassette('user_token') do 
     expect(make_http_request).to be_success 
     end 
    end 
    end 
end 

だから、私のコードでは、それが有効な場合user_tokenとクッキーがExAPIに送信し、期待し、目的のアクションを実行します。

これはスペックがどのようである:(IはExAPIに接続するためのコードがVCR.use_cassete範囲内ではないので、それはだと仮定している問題がcasseteが使用されていないということです

describe UserStoriesController, type: :controller do 
    before(:each) do 
    set_cookies 
    end 

    context do 
    let!(:user) { 
     FactoryGirl.create(:user) 
    } 
    let!(:some_user_stories) { 
     FactoryGirl.create_list(:user_story, 3, user: user) 
    } 

    describe 'GET index' do 
     it 'returns a successful 200 response' do 
     VCR.use_cassette('user_token') do 
      get :index 
      expect(response).to be_success 
     end 
     end 
    end 
    end 
end 

が、 。コントローラ内部の方法で

おかげ

答えて

0

[OK]を、私のミスこれを行うために、その方法です私はVCRを初期化するために忘れてしまいました?。:

VCR.configure do |config| 
    config.cassette_library_dir = "fixtures/vcr_cassettes" 
    config.hook_into :webmock 
end 
関連する問題