java - Classcast exception on mocking JAX-WS proxy -


classcast on mocking jax-ws proxy

i try use jaxwsportproxyfactorybean in spring (3.2.2 release), fails when try mock port in unit test. reason classcast exception need cast proxy bindingprovider.

i tried add withsettings().extrainterfaces, same exception. https://groups.google.com/forum/?fromgroups=#!topic/mockito/ym5ef0x90_4

has suggestions resolve pain in ass or doing mocking of port in other way? reason added jaxwsportproxyfactorybean able unit test without doing ws call.

applicationcontext-beans:

<bean id="port" class="org.mockito.mockito" factory-method="mock" >     <constructor-arg index="0" value="name of porttype class" /> </bean> 

wshelper:

    import com.sun.xml.ws.client.bindingproviderproperties;     import javax.xml.ws.bindingprovider;         @resource         private  theporttypeclass port;     …         bindingprovider bp = (bindingprovider) port;  ... 

portfolioimpl:

request request=  requesthelper.getrequest(vo); theporttypeclass port =wshelper.getport(); response response = null; response = port.wsmethod(request); 

unit test:

import static org.mockito.mockito.*; import static org.junit.assert.*;   @runwith(springjunit4classrunner.class) @contextconfiguration(locations = {"/applicationcontext.xml"}) public class portfolietest {  @resource     private theporttypeclass port;      @resource     private wshelper wshelper;        @autowired     portfolio portfolio;      @before     public void setup(){          response response = new response();         …         port=mock(theporttypeclass.class, withsettings().extrainterfaces(bindingprovider.class));         when(port.method(any(request.class))).thenreturn(response);      }      @test     public void update() {                 assertequals(true, portfolio.update(someparameters)); } } 

update:

i don't think issue different versions of bindingprovider. when following change proxy bean it's able cast , ws call.

  <bean id="port" class="org.springframework.remoting.jaxws.jaxwsportproxyfactorybean">         <property name="serviceinterface" value="theporttypeclass" />         <property name="namespaceuri" value="nm" />         <property name="servicename" value="theservicename" />         <property name="endpointaddress" value="theurl" />         <property name="wsdldocumenturl" value="theurl" />     </bean> 

the jaxwsportproxyfactorybean implements bindingprovider interface it's able cast proxy bindingprovider. when mock object no longer of type implements bindingprovider.

after research found out unit test looked more integration test..

changed test following make work:

 @runwith(mockitojunitrunner.class) public class portfolietest {      @injectmocks     portfolio portfolio = new portfolioimpl();      @mock     private theporttype port;      @mock         private wshelper wshelper = new wshelper();      @before     public void setup() throws feil, malformedurlexception, documentexception {          response response = new response();         …          when(wshelper.geport(someparameters).thenreturn(port);         when(port.wsmethod(any(request.class))).thenreturn(response);      }      @test     public void update() throws malformedurlexception, documentexception {         assertequals(true, portfolio.update(someparameters));     } 

Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -