ruby - 使用 Savon 测试本地 Web 服务

标签 ruby soap savon

我正在编写一个 gem,以向 Ruby 添加对 SOAP 服务的支持(我讨厌自己这样做,但是,你知道,遗留系统感到孤独,必须与某人交谈),我想知道是否有办法我可以使用 Savon 作为客户端库编写一些测试。

我的问题是:如何告诉 Savon 使用 Rack::Test 调用 WebService?

gem 来源托管在这里:https://github.com/elementar/shapewear

最佳答案

我最终使用了 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

关于ruby - 使用 Savon 测试本地 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717522/

相关文章:

ruby-on-rails - 如何在 savon 2.0.2 中使用证书

ruby - 使用 SAVON response.to_hash 转换方法解析 SOAP 响应

ruby-on-rails - 在生产应用程序中从头开始进行身份验证?

web-services - 使用 Objective C 进行 SOAP 查询

java - 如果 SOAP 是独立于 HTTP 的,而 REST 是基于 HTTP 的,那么为什么呢?

python - 通过 SOAP 访问 ISI Web of Science

ruby-on-rails - rails 4 直播不适用于 Puma

Ruby - 如何获取当前用户的时间?

ruby - 如何在构建 ruby​​ gem 之前运行单元测试?