3

我有一部分用作 SOAP 服务的 rails 2 webservice 应用程序(历史原因,应用程序的其余部分是 REST)。只需两个操作AddLeadShowLead,使用 wsdl /soap/wsdl

我想通过 Rspec 集成测试来测试这个操作。尝试使用 Savon gem ( /spec/integration/soap_spec.rb):

require "spec_helper"
require 'rubygems'
require 'savon'

describe "Leads" do

  before(:all) do
    wsdl=   "http://localhost:3000/soap/wsdl"
    wsdl = "http://www.example.com/soap/wsdl"
    @client = Savon.client(:wsdl => wsdl )

    puts("WSDL actions: #{@client.operations}")
  end
end

但是我找不到应该使用哪个 URL 来指向 WSDL。

URLlocalhost:3000不起作用,以错误结尾:

 Errno::ECONNREFUSED in 'Leads before(:all)'
 Connection could not be made, because target server it actively denied. - connect(2)

URL www.example.com(从测试 url 帮助程序输出)也不起作用,以错误结尾:

   Wasabi::Resolver::HTTPError in 'Leads before(:all)'
   Error: 302

有任何想法吗?

福田

4

1 回答 1

3

试试下面的链接:http ://blog.johnsonch.com/2013/04/18/rails-3-soap-and-testing-oh-my/

在您的描述块内部使用 HTTPI 机架适配器,然后配置该适配器以安装您的应用程序。这将使您能够使用特定的 url。

require 'spec_helper'
require 'savon'

describe API::MyService do
  HTTPI.adapter = :rack
  HTTPI::Adapter::Rack.mount 'application', MyApp::Application

  it 'can get a response' do
    application_base = "http://application"
    client = Savon::Client.new({:wsdl => application_base + '/soap/wsdl' })
    ...
    ...
  end
  ...
于 2013-12-19T19:48:35.703 回答