Как макетировать весь сеанс связи JAX-RPC?
У меня есть устаревшее приложение, которое работает со сторонним веб-сервисом через JAX-RPC. Теперь мне нужно выполнить модульное тестирование приложения, имитируя определенные вызовы XML RPC с тестовыми данными. На самом деле мне нужно заменить Apache Axis, который используется приложением, на какую-то другую библиотеку, которая будет JAX-RPC-совместимой, но вернет то, что я говорю, чтобы она возвращалась. Я почти уверен, что не одинок с такой проблемой... Есть ли для этого библиотеки с открытым исходным кодом?
3 ответа
У меня был некоторый успех с WireMock. Это сервер Jetty, который вы настроили программно для ответа на определенные шаблоны запросов с указанным вами содержимым. Я смог настроить его так, чтобы он отвечал на запросы XML-RPC из моего класса. Например,
stubFor(post(urlEqualTo("/RPC2"))
.withRequestBody(containing("<methodName>...</methodName>"))
.willReturn(aResponse()
.withBody("<methodResponse>...</methodResponse>")));
Вы можете сделать это с помощью Spring Framework и EasyMock.
Для прослушивания звонков на внешние сервисы вы можете использовать EasyMock+Powermock
или же Mockito
вы можете сделать что-то вроде этого
Easymock.expect(your function calling external Systems).andReturn(your required output)
надеюсь это поможет!
Удачи!