使用vcr存根ViewPoint gem返回取消授权来自ews API的响应

时间:2016-09-15 15:07:01

标签: ruby-on-rails rspec exchangewebservices vcr viewpoint

我正在查询通过ViewPoint gem的所有请求。使用vcr gem

require 'spec_helper'
require 'vcr'

describe CalendarImporters::Ews::Get do
  let(:conf_connection) { FactoryGirl.create(:conf_connection)}
  let(:calendar) { create(:calendar, :for_ews) }
  let(:connection) { Connections::Ews.new(conf_connection, calendar.ews_email) }

  it "works" do
    VCR.use_cassette("a/cassette") do
      connection.client.get_folder(:calendar)
    end
  end
end

connection.client会返回新的ViewPoint连接。

我从gem返回的响应是:Viewpoint::EWS::Errors::UnauthorizedResponseError等同于来自ews api的401未授权代码。

我发现了这个问题:https://github.com/vcr/vcr/issues/297

这与我遇到的问题完全相同,但它已有3年历史,没有解决方案。我所有的其他google foo都没有发现。

深入研究视点宝石,除了HTTPClientWebMockHTTPClient之外,我无法找到请求对象之间的任何差异。

1 个答案:

答案 0 :(得分:1)

ViewPoint使用HTTPClient进行连接,因此您需要配置VCR以使用钩子连接到:webmock并对请求进行存根。