我知道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()
- 方法?
答案 0 :(得分:1)
一项测试应该集中在一件事上。该方法是关于发送的,因此测试应该验证。
如果您将消息准备纳入验证,则将这两者结合在一起。当您现在重构代码以在另一种方法中使用message-prep时,您必须更改测试,尽管发送部分没有任何变化。
顺便说一下:如果在此过程中出现问题,send()
将无法执行且测试为红色。