Я использую классы, созданные веб-сервисом JAX-WS, или, можно сказать, прокси и заглушки. Мне нужно преобразовать этот прокси в интерфейс BindingProvider, чтобы установить конечную точку во время выполнения. (К сожалению, созданный интерфейс прокси не расширяет интерфейс BindingProvider). Мне удалось запустить код, но в Junit я не могу издеваться над ним. Совместное использование кода ниже
String url="http://<soapservice>?.wsdl"
SomeInterface port = someImplService.getSomeImplPort();
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
port.methodcall();
I am trying to mock the service in Junit
@Mock BindingProvider bp;
@Mock SomeInterface someInterface;
@Mock SomeImplService someImplService;
@Mock Map<String, Object> context;
First Try:
when(this.someImplService.getSomeImplPort()).thenReturn(bp);
when(bp.getRequestContext()).thenReturn(context);
when(context.put(anyObject(), anyObject())).thenReturn(context);
someInterface.methodcall();
For above code first line compile error as it expect reference of SomeInterface
Second Try:
when(this.someImplService.getSomeImplPort()).thenReturn(someInterface);
when((BindingProvider)someInterface).thenReturn(bp);
when(bp.getRequestContext()).thenReturn(context);
when(context.put(anyObject(), anyObject())).thenReturn(context);
someInterface.methodcall();
For above code ClassCast Exception at line 2
Can someone suggest me solution how to mock the binding provider and impl classes in this case