Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Произвольный ответ на соап запрос, заглушка вместо настоящего ответа поставщика.

soap
webservices
php
Теги: #<Tag:0x00007fedbff7ebf8> #<Tag:0x00007fedbff7ea18> #<Tag:0x00007fedbff7e8b0>

(Kirill “Eats Full Lemons” Fimchenko) #1

Добрый день/вечер!
В проекте получает соап ответы от поставщика и в тестовой среде не всегда можем добиться нужного нам ответа, нужна возможность самому ручками набрасать фейковый ответ от поставщика.
Пытался прямо в коде вместо $stdResponse = ChildSoapClass:__soapCall($method, $requestData); подставить ответ, но не получилось xml файл преобразовать в правильный стд обьект, с которым программа могла бы корректно работать дальше.
Возможно лучше стоит создать фейковый сервер который возвращает всегда 1 нужный нам ответ, а в коде просто менять путь для запроса. Но я не делал своих соап серверов, я не уверен что так можно сделать (не зависимо от запроса выдавать какой то заранее собранный ответ), там же надо создавать какой то wsdl файл который описывал бы сервер (который еще валидирует запрос, если я правильно понял).

Можете мне что то посоветовать в такой ситуации? что гуглить?
я почему то в гугле не нашел ничего подобного, хотя мне кажется вопрос актуальный, я давно такую штуку хочу… Для джсона вроде полегче с этим… а вот на соапе не знаю как.
Заранее спасибо.


(Stan) #2

“Create basic(simple etc) soap server php” :

http://www.sitepoint.com/web-services-with-php-and-soap-1/
https://gist.github.com/elvisciotti/4586286
http://www.ibm.com/developerworks/opensource/tutorials/os-php-webservice/

и еще миллионы ссылок, что конкретно не получается?


(Kirill “Eats Full Lemons” Fimchenko) #3

Ну… я опыта не особо много имею в этом деле. Сейчас сделал по примеру из указанных ссылок, тестовый клиент хорошо получает ответ от тестового сервера. Попробовал рабочий проект переключить на мой тестовый сервер для выдавания заглушек. В итоге у меня все сфейлилось из-за валидации(?)
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://nemotest/server/soapServer.php’ : Start tag expected, ‘<’ not found
Ну как бы да, в своем фейк сервере не делал всдл, в первом посте я высказал свои переживания на эту тему, что из-за всдл не пройдет валидация запроса.

возможно я смог бы скопировать(когда в браузере открываешь адрес куда идут запросы, там всдл схема) всдл рабочего сервера и поставить ее на фейковый сервер… надо поискать как это делается (ставится всдл на сервер) мб получится.


(Stan) #4

а вручную http://nemotest/server/soapServer.php отдает валидный ответ? И вообще отдает хоть что-то? скиньте что не проходит валидацию?


(Kirill “Eats Full Lemons” Fimchenko) #5

Реализацию простого сервера взял тут http://www.herongyang.com/Web-Services/PHP-SOAP-Server-Example-HelloServer.html

И вообще отдает хоть что-то?

Отдает ‘hello’, потом я загрузил бы мне нужную хмл. Но когда я отправляю запрос с реального проекта на этот сервер, то происходит ошибка, которую указал выше, в этом реальном запросе просто набор данных в хмл формате, обычный соап запрос

Судя по ошибке ‘<’ сервер вообще не готов что либо адекватное принимать, кроме тестовой штуки с ссылки которая выше.


(Дмитрий Мирошник) #6

SoapUI умеет генерить заглушку, возвращающую ответ в зависимости от посланного запроса.


#7

А если использовать мок из SoapUI? http://www.soapui.org/getting-started/mock-services.html