[ 
https://issues.apache.org/jira/browse/CXF-8003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16799211#comment-16799211
 ] 

Andriy Redko commented on CXF-8003:
-----------------------------------

[~Oneping] this has nothing to do with mocking actually, when you use oneway 
methods (which return void), CXF does run them asynchronously. You may see 
{noformat}
TEST BEAN: null{noformat}
In case when test case is finished but the method is being executing (in this 
case, there is no mocks configured anymore). The simplest solution(s) I can 
think of is to:

 1) Add some delay
{noformat}
helloWorldClient.sayHello("John", "Doe");
Thread.sleep(100);{noformat}
2) Or better, use [https://github.com/awaitility/awaitility] with any suitable 
primitives to make sure the callSoapClient() was called:
{noformat}
final CountDownLatch latch = new CountDownLatch(1);
when(mockService.callSoapClient()).thenAnswer(invocation -> {
    latch.countDown();
    return new String("CallMockClient_testSayHello");
});

helloWorldClient.sayHello("John", "Doe");
latch.await(1, TimeUnit.SECONDS);{noformat}
 

> @MockBean issue in cxf-spring-boot-starter-jaxws
> ------------------------------------------------
>
>                 Key: CXF-8003
>                 URL: https://issues.apache.org/jira/browse/CXF-8003
>             Project: CXF
>          Issue Type: Bug
>            Reporter: Tsvetoslav
>            Priority: Minor
>         Attachments: cxf-jaxws-spring-boot-new.zip, image (1).png, 
> image-2019-03-22-15-30-26-348.png, image-2019-03-22-15-30-49-153.png
>
>
> Hi,
>  
> I'm creating Soap web service using wsdl2java plugin. I use 
> cxf-spring-boot-starter-jaxws dependency which gives me an opportunity to 
> create the service using both frameworks Apache-cxf and Spring boot. When I 
> was developing my Integration tests, I faced an issue which blocks my work. 
> I've created a component which is client to another service. This component 
> has been @Autowired in my Implementation class. In my test I would like to 
> mock this component because during the build I don't want to have real call 
> to the service. For some reason when the Implementation method is from *void* 
> return type, the Mocking doesn't work properly. 
> I attached you a Screenshot from my test and implementation class.
> Here is the log from the execution:
> 11:09:09.697 [http-nio-9091-exec-1] INFO c.i.es2.endpoint.SmDpES2PortImpl - 
> Executing operation es2GetEIS
> 11:09:09.698 [http-nio-9091-exec-1] INFO c.i.es2.endpoint.SmDpES2PortImpl -
> *TEST BEAN: CallMockClient_ES2GetEis*
> ----
> 11:09:09.733 [default-workqueue-1] INFO c.i.es2.endpoint.SmDpES2PortImpl - 
> Executing operation es2DownloadProfile
> 11:09:09.734 [default-workqueue-1] INFO c.i.es2.endpoint.SmDpES2PortImpl -
> *TEST BEAN: null* 
> I hope you can help me out for the problem.
> Thank you in advance!
>  
> PS: I tested with different dependencies version and hit the same issue



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to