Reputation: 979
Test Class
public class CollectionImplementationUnitTest {
CollectionImplementation colImp;
public void setup() throws Exception {
...
colImp = Mockito.spy(new CollectionImplementation());
...
}
private String mockHistoryFromStrgyTable() {
String value1 = "myValue";
return value1;
}
@Test
public void testgetinfo (){
...
Mockito.when(
colImp.historyFromStrgyTable(
Mockito.anyString(),Mockito.anyString(),Mockito.anyString()
)
)
.thenReturn(mockHistoryFromStrgyTable());
CollectionsAccount Info = colImp.accountInfo(
"string1","string2","string3", new IdentityAcc(), TableLst
);
//sometestmethods and asserts
}
}
Class under Test
public class CollectionImplementation {
...
@Override
public CollectionsAccount accountInfo(("string1","string2","string3", new IdentityAcc(), TableLst)) {
DetailsHelper helper = new (db2, "string",getmethod());
return helper.accountInfo("string1","string2", new IdentityAcc(), TableLst);
}
public String historyFromStrgyTable(){
//contains a call to the data base
}
}
DetailsHelper
public class DetailsHelper{
public CollectionsAccount accountInfo((String string1,String string2,String string3, new IdentityAcc(), TableLst)){
...
String paymentdetails = historyFromStrgyTable();
}
public String historyFromStrgyTable(){
//contains a call to the data base
}
}
When I try to mock the data for the method HistoryFromStrgyTable() it is actually making a call to HistoryFromStrgyTable() instead of getting from mockHistoryFromStrgyTable().
My test cases are failing at this line
Mockito.when(col_Imp.HistoryFromStrgyTable(Mockito.anyString(),
Mockito.anyString(),Mockito.anyString())).thenReturn( mockHistoryFromStrgyTable());
Can anyone help me with this. I don't understand what's wrong. I also changed the method mockHistoryFromStrgyTable() from private to public since mockito cannot mock private methods.
Upvotes: 1
Views: 6024
Reputation: 79838
This is happening because you're using a spy, not a mock. Running the "real" method when you call it is exactly what Mockito spies are supposed to do.
To stub your spy, this is the syntax that you want to use.
Mockito.doReturn(mockHistoryFromStrgyTable()).when(colImp).
historyFromStrgyTable(Mockito.anyString(),Mockito.anyString(),Mockito.anyString());
You can find more detail on this in my post here.
Upvotes: 2