存根类并返回VCR响应

时间:2018-07-11 07:57:11

标签: rspec vcr

我有一个翻译类,该类已调用了连接器类。连接器类确实向外部API请求,想要使用VCR记录此API操作,然后对连接器类的存根实例进行存根并在调用Translator中返回API操作的VCR响应。

class Translator
  def initialize
    @obj = Connector.new().connect
  end

  def format
    # use obj here for some logic
  end
end

class Connector
  def connect
    # http request to external API
  end
end


RSpec.describe Translator, type: :services do
  before do
    allow_any_instance_of(Connector).to receive(:connect).and_return(VCR recorded response)
  end
end

1 个答案:

答案 0 :(得分:0)

VCR易于使用,可能比您预期的要容易,这就是您遇到问题的原因。

RSpec.describe Translator, type: :services do
  it do 
    use_vcr_cassette do
      expect(Translator.format).to eq 'Foo'
    end
  end
end

第一次运行规范-它会发出一个HTTP请求并将其保存在YAML文件中。下次运行它时-它会使用记录的响应。

这是魔术。更多信息和选项:https://relishapp.com/vcr/vcr/v/1-5-0/docs/test-frameworks/usage-with-rspec