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
が、 。コントローラ内部の方法で
おかげ