Ich habe die folgende Methode, die ich testen wollen:Mocking ein Verfahren mit anderen Verfahren
public boolean sendMessage(Agent destinationAgent, String message, Supervisor s, MessagingSystem msgsys, String time) throws ParseException {
if(mailbox.getMessages().size() > 25){
return false;
}else{
if(login(s, msgsys, time)){
try {
sentMessage = msgsys.sendMessage(sessionkey, this, destinationAgent, message);
if(sentMessage.equals("OK")) {
return true;
}
return false;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
return false;
}
}
ich die Methode login(s, msgsys, time)
verspotten wollen. Ich tue dies wie folgt:
@Mock
private Supervisor supervisor;
@Mock
private MessagingSystem msgsys;
@Test
public void testSendMessageSuccess() throws ParseException {
String message = "Hey";
Agent destination = new Agent("Alex", "2");
agent.sessionkey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
when(agent.login(supervisor, msgsys, anyString())).thenReturn(true);
when(msgsys.sendMessage(agent.sessionkey, destination, agent, message)).thenReturn("OK");
boolean result = agent.sendMessage(destination, message, supervisor, msgsys, time);
assertEquals(true, result);
}
jedoch der folgende Fehler aufgetreten ist:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
Boolean cannot be returned by getLoginKey()
getLoginKey() should return String
Bitte beachten Sie, dass die Methode getLoginKey()
- einen String zurückgibt, innerhalb der Methode aufgerufen wird login(s, msgsys, time)
, und es gehört zu einer Interface-Klasse.
@Before
public void setup(){
MockitoAnnotations.initMocks(this);
agent = new Agent("David", "1");
time = dateFormat.format(new Date());
}
@After
public void teardown(){
agent = null;
}
wo ist das Objekt 'Agent' instanziiert hier? – Plog
@Plog es ist in der Setup-Methode '@ Before' instanziiert, ich habe die Frage für Sie zu sehen. –