2
我想在当前应用中使用TDD并尝试创建一些测试。在这种情况下,我需要发送消息来支持,如果它可以返回true
。但是当我开始我的测试时,我会失败,因为实际和预期的结果是不一样的。模拟不正常工作
当我调试这个测试时,我看到,mockito把Mocks放在我需要的位置,但sender.sendSupportMessage()
steel返回false。有人可以解释我发生了什么问题吗?
public class SupportTests {
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Mock
SupportContract.ISupportMessageSender sender;
@Mock
CurrentUserOperations currentUserOperations;
private SupportMessage stubSupportMessage;
private String message;
@Before
public void init(){
message = "message";
stubSupportMessage = new SupportMessage(1, message, null);
}
@Test
public void testSendMessageToSupportShouldBeDone(){
Support support = new Support(sender, currentUserOperations);
when(currentUserOperations.getCurrentUserSystemId())
.thenReturn(Long.valueOf(1));
when(sender.sendSupportMessage(stubSupportMessage))
.thenReturn(true);
boolean actualResult = support.sendMessageToSupport(message);
assertEquals("Sending message to support are failed.", true, actualResult);
}
}
public class Support implements SupportContract.ISupport {
private SupportContract.ISupportMessageSender sender;
private CurrentUserOperations currentUserOperations;
public Support(SupportContract.ISupportMessageSender sender, CurrentUserOperations currentUserOperations) {
this.sender = sender;
this.currentUserOperations = currentUserOperations;
}
@Override
public boolean sendMessageToSupport(String message) {
long userSystemId = currentUserOperations.getCurrentUserSystemId();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SupportMessage supportMessage = new SupportMessage(userSystemId, message,
dateFormat.format(Calendar.getInstance().getTime()));
return sender.sendSupportMessage(supportMessage);
}
}