我有一个翻译类,该类已调用了连接器类。连接器类确实向外部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
答案 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