Mockito:TestStub和Mock之间的区别

时间:2015-10-23 23:06:12

标签: java mockito

我知道mockito中的teststubs仅用于控制测试双倍的输入和输出

与此相反,模拟必须验证对测试至关重要的方法调用

让我们说我们想测试sendMessage() - 方法:

public void sendMessage(Client client,Template template) {
         String msgContent=templateEngine.prepareMessage(template,client);
         mailserver.send(client.getEmail(),msgContent); 
}

现在我的问题:

mailserver.send() - 方法对sendMessage至关重要,必须验证为模拟。没关系对我来说。但是为什么templateEngine.prepareMessage()应该被设计为teststub?我知道我们只需要msgContent - 对象作为mailserver.send()的参数,但是我也不应该验证是否调用了perepareMessage() - 方法?

1 个答案:

答案 0 :(得分:1)

一项测试应该集中在一件事上。该方法是关于发送的,因此测试应该验证。

如果您将消息准备纳入验证,则将这两者结合在一起。当您现在重构代码以在另一种方法中使用message-prep时,您必须更改测试,尽管发送部分没有任何变化。

顺便说一下:如果在此过程中出现问题,send()将无法执行且测试为红色。