我有一部分Rails 2 Web服务应用程序,它被用作SOAP服务(由于历史原因,应用程序的其余部分是REST)。
只有两个操作AddLead
和ShowLead
,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。
URL localhost: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 helpers输出的)也无法使用,以错误结束:
Wasabi::Resolver::HTTPError in 'Leads before(:all)'
Error: 302
Any ideas?
Foton
/soap/wsdl
(用于 REST 集成 Rspec 测试;例如,get "resource/id.xml"
)。结果是:'Leads before(:all)' 中的 Errno::ENOENT
,没有该文件或目录 - /soap/wsdl。 - Foton:wsdl
选项需要您的服务WSDL文档的URL。我不确定Rails在测试期间使用哪个端口(尝试http://test.host:80
),但我建议使用Rails的URL-Helpers为您设置正确的主机和端口。 - rubiiisoap_wsdl_url()
指向http://www.example.com/soap/wsdl
。我已经尝试过这个地址,但出现了 Wasabi::Resolver::HTTPError (如上所示)。 - FotonErrno::ECONNREFUSED
错误信息,你可能会找到与你的设置相关的内容。如果这对你没有用,请尝试在一个新的 Rails 应用程序中复现问题,并将仅包含此错误所需代码的应用程序推送到 GitHub。 - rubiii