VCR Cucumber 문서는 vcr_cucumber_helpers.rb
에서로드 된 start_sinatra_app
이라는 함수를 사용하여 작은 Sinatra 앱을 사용하여 원격 서버를 시뮬레이션하는 많은 예를 보여줍니다.RSpec/VCR에서 Sinatra를 사용하여 원격 서버를 시뮬레이션하려면 어떻게해야합니까?
레일즈/RSpec/VCR 테스트에 사용하고 싶지만 start_sinatra_app
(또는 동급)을 테스트 프레임 워크로 가져 오는 방법을 찾지 못했습니다. 내 순진한 접근 방식은 작동하지 않습니다 - 당연하지 - vcr_cucumber_helpers.rb
을 찾을 수 없습니다.
RSpec에서 작동하게하려면 다음을 추가해야합니까? 아니면 잡초에서 벗어나이 모든 일을 잘못 했습니까? 다시 사용
def start_sinatra_app(options, &block)
raise ArgumentError.new("You must pass a port") unless options[:port]
require 'sinatra'
require 'support/vcr_localhost_server'
klass = Class.new(Sinatra::Base)
klass.disable :protection
klass.class_eval(&block)
VCR::LocalhostServer.new(klass.new, options[:port])
end
그건 VCR::LocalhostServer :
# file: spec/app/models/sinatra_test_spec.rb
require 'spec_helper'
start_sinatra_app(:port => 7777) do
get("/") { "Hello" }
end
describe "sinatra rspec test" do
it 'calls the sinatra app' do
VCR.use_cassette("sinatra_rspec_test") do
res = Net::HTTP.get_response('localhost', "/", 7777)
res.body.should == 'Hello'
end
end
end
감사합니다! - 죄송합니다. 귀하의 답변을 더 빨리 알 수 없었습니다! –