aspose file tools*
The moose likes Testing and the fly likes How to set expectation to params passed to void methods using EasyMock Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Engineering » Testing
Bookmark "How to set expectation to params passed to void methods using EasyMock" Watch "How to set expectation to params passed to void methods using EasyMock" New topic
Author

How to set expectation to params passed to void methods using EasyMock

Sathiesh Kumar Vs
Ranch Hand

Joined: Oct 24, 2010
Posts: 31
I am using EasyMock and EasyMock CE 3.0 to mock dependent layers and test my classes. Below is the scenario for which I am not able to find any solution

I have class to be tested, which calls a dependent class void method that takes an input param, and alters the same param. The method that I am testing is doing some operations based on the altered param, which I have to test now for various scenarios

Consider the below sample, where I have tried to put the same scenario

public boolean voidCalling(){
boolean status = false;
SampleMainBean mainBean = new SampleMainBean();
dependentMain.voidCalled(mainBean);
if(mainBean.getName() != null){
status = true;
}else{
status = false;
}
return status;
}
And the dependentMain class the below method

public void voidCalled(SampleMainBean mainBean){
mainBean.setName("Sathiesh");
}
To have full coverage, I need to have 2 test cases to test both the scenarios where true and false are returned, but I always get false as I am not able to set the behaviour of the void method to alter this input bean. How can I get a true as result in this scenario using EasyMock

Thanks in advance for any help.


Thanks and Regards,
Sathiesh.
Jeanne Boyarsky
author & internet detective
Marshal

Joined: May 26, 2003
Posts: 31054
    
232

The problem is that SampleMainBean mainBean = new SampleMainBean(); occurs inside the method. It needs to be an instance variable or parameter so you can pass in the mock version.


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
Sathiesh Kumar Vs
Ranch Hand

Joined: Oct 24, 2010
Posts: 31
Isn't there any way to mock objects that are created as new Object() within the method ?
Sathiesh Kumar Vs
Ranch Hand

Joined: Oct 24, 2010
Posts: 31
Hi...

I got the solution for this.. For the object being created inside the method, using Easymock.anyObject() helps me to set the expectation.



Also, Using IAnswer, i am able to set the answer to the void method by getting the input object that it is using.

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to set expectation to params passed to void methods using EasyMock