2012-01-03 3 views
1

Ruby에 SOAP 서비스에 대한 지원을 추가하기 위해 보석을 쓰고 있습니다. (저는이 일을하면서 자신을 싫어하지만 레거시 시스템은 외로움을 느끼고 다른 사람과 이야기해야합니다) 클라이언트 라이브러리로 Savon을 사용하여 몇 가지 테스트를 작성할 수있는 방법이 있는지 궁금합니다.Savon과 함께 로컬 웹 서비스를 테스트하십시오.

제 질문은 :을 사용하여 Savon에게 WebService를 호출하도록하려면 어떻게해야합니까?

주옥 소스는 여기 호스팅 : https://github.com/elementar/shapewear

+1

이 https://github.com/rubiii을 통해 연락하고 우리는 그것에 대해 얘기하자! – rubiii

답변

3

나는 WebMock 보석을 사용하여 끝났다. 다음은 결과입니다 :

https://github.com/elementar/shapewear/blob/master/spec/shapewear/savon_usage_spec.rb

describe Shapewear do 
    describe "usage with SOAP clients" do 
    before do 
     stub_request(:get, "http://services.example.com/complete/soap/wsdl") \ 
     .to_return :body => CompleteService.to_wsdl, 
        :headers => {'Content-Type' => 'application/xml'} 

     stub_request(:post, "http://services.example.com/complete/soap") \ 
     .to_return :body => lambda { |r| CompleteService.serve(r) }, 
        :headers => {'Content-Type' => 'application/xml'} 
    end 

    it "should work with Savon" do 
     client = Savon::Client.new 'http://services.example.com/complete/soap/wsdl' 
     response = client.request :echo_in_uppercase, :xmlns => 'http://services.example.com/v1' do 
     soap.body = {:text => 'uppercase text'} 
     end 

     response.body[:echo_in_uppercase_response][:body].should == 'UPPERCASE TEXT' 
    end 
    end 
end 
관련 문제