2012-01-03 2 views
1

Я пишу драгоценный камень, чтобы добавить поддержку SOAP-сервисов Ruby (я ненавижу себя за это, но, знаете, унаследованные системы чувствуют себя одинокими и должны поговорить с кем-то) Мне интересно, есть ли способ написать некоторые тесты с использованием Savon в качестве клиентской библиотеки.Проверка локального веб-сервиса с помощью Savon

Мой вопрос: как я могу сказать Савону позвонить в WebService с помощью Rack::Test?

Источники гемов размещены здесь: 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 
Смежные вопросы