2

RubyにSOAPサービスのサポートを追加するためのgemを書いています(これを行うのは嫌いですが、レガシーシステムは孤独を感じており、誰かと話をしなければなりません)、私が書くことができる方法があるかどうか疑問に思っていますSavonをクライアントライブラリとして使用するいくつかのテスト。

私の質問は、SavonにWebServiceを使用して呼び出すように指示するにはどうすればよいRack::Testですか?

宝石のソースはここでホストされています:https ://github.com/elementar/shapewear

4

1 に答える 1

3

最終的にWebMock gemを使用しました。結果は次のとおりです。

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
于 2012-01-05T21:47:11.130 に答える