3
我有我的rails 2 web服務應用程序的一部分用作SOAP服務(歷史原因,其餘應用程序是REST)。 只需兩個操作AddLead
和ShowLead
,wsdl在/soap/wsdl
。我的SOAP服務的集成/請求rspec測試
我想通過Rspec集成測試來測試此操作。 嘗試使用薩翁寶石(/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
(這是從測試網址助手輸出)也不起作用,錯誤結束:
Wasabi::Resolver::HTTPError in 'Leads before(:all)'
Error: 302
任何想法?
福田
還嘗試過只是實際路徑'/ soap/wsdl'(用於REST集成Rspec測試;例如'get「resource/id.xml」')。結果是:'Errno :: ENOENT in'Leads before(:all)' 沒有這樣的文件或目錄 -/soap/wsdl' – Foton
':wsdl'選項需要URL到您的服務的WSDL文檔。我不確定Rails在測試過程中使用的端口(嘗試'http://test.host:80'),但我建議使用Rails的URL-Helpers爲您設置corrent主機和端口。 – rubiii
助手'soap_wsdl_url()'指向'http:// www.example.com/soap/wsdl'。我已經嘗試過使用Wasabi :: Resolver :: HTTPError(參見上文)。 – Foton