I\'m trying to stub a method using Mockito 1.8.5, but doing so calls the real method implementation (with \"\" as parm values) which throws an exception.
pac
I disagree with the accepted response.
I think, you have to provide more details on your environment. I can't reproduce your problem. I write the following code in a maven project :
package background.internal; //located in src/main/java
public class FileAttachmentContainer {
String moveAttachment(String arg1, String arg2, String arg3) {
throw new IllegalStateException();
}
String getPersistedValue(Context context) {
throw new IllegalStateException();
}
}
and
package background.internal;
public class AttachmentMoveStep {
private FileAttachmentContainer file;
public AttachmentMoveStep(FileAttachmentContainer file) {
this.file = file;
}
public Action advance(double acceleration, Context context) {
String attachmentValue = file.getPersistedValue(context);
file.moveAttachment(attachmentValue, "attachment", context.getUserName());
return Action.done;
}
}
and the following test pass
package background.internal; //located in src/test/java
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import org.junit.Test;
public class MoveStepTest {
@Test
public void testMoveUpdate() {
String returnValue = "value";
FileAttachmentContainer file = mock(FileAttachmentContainer.class);
doReturn(returnValue).when(file).moveAttachment(anyString(), anyString(), anyString());
//this also works
//when(file.moveAttachment(anyString(), anyString(), anyString())).thenReturn(returnValue);
AttachmentMoveStep move = new AttachmentMoveStep(file);
Action moveResult = move.advance(1, mock(Context.class));
assertEquals(Action.done, moveResult);
}
}
My project use the following dependencies :