Мне нужно провести некоторое тестирование для приложения, которое делает несколько
SOAP вызывает стороннее приложение и затем обрабатывает результат.
Я хотел отправить конкретные данные в тестируемое приложение с
программа, имитирующая стороннее приложение.
Я понял, что все, что мне действительно нужно, это иметь процесс на сервере, который
1) принимает входящие SOAP-вызовы из тестируемого приложения
2) определяет, какое пространство имен используется во входящем вызове SOAP
3) возвращает ответ SOAP с использованием статического XML на основе этого пространства имен.
Я думал, что просто буду использовать Ruby SOAP :: RPC :: StandaloneServer, но это предполагает
единственное пространство имен в конструкторе, поэтому я был озадачен (я подумал
исправление кода, который обрабатывает пространства имен, но это выглядело сложно).
Затем я решил попробовать что-нибудь с Ruby TCPServer. Я добрался до
код ниже, когда я понял, что понятия не имел, как правильно вернуть
соответствующий XML в правильном стиле SOAP.
require 'socket'
server = TCPServer.new('127.0.0.1', 9800)
loop {
client = server.accept
# This is for illustration only, it's clearly wrong
while line = client.gets
if line =~ /urn:foo/
# return the foo xml in the correct SOAP fashion
elsif line =~ /urn:bar/
# return the bar xml in the correct SOAP fashion
end
end
client.close
}
trap('INT') { exit }
Обратите внимание, что тестируемое приложение не является приложением Ruby и оно
не дружит с тестированием. Также обратите внимание, что я с удовольствием рассмотрю другое решение
(например, решение Perl), если это было проще - я только начал с Ruby, так как
У меня есть немного опыта с этим.