我已经建立了一个API(
MyAPI
)连接到外部API进行身份验证的(
ExAPI
).
对于需要对用户进行身份验证的MyAPI的所有请求,他发送一个带有令牌的cookie,然后将其发送给ExAPI,然后它获取用户信息。
我记录了一个带有此请求的卡塞特:
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_stories
它需要一个带有
user_token
将其发送到ExAPI,如果有效,则执行所需的操作。
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
问题是没有使用cassete(我假设这是因为连接到ExAPI的代码不在
VCR.use_cassete
范围,但在控制器内的方法中。
这是一种方法吗?
谢谢