我有一个非常简单的问题:我一直在为具有 Context 对象的命令对象编写一些单元测试。这个上下文里面有一些领域实体。
public class Context {
private DomainEntity domainEntity1;
private Dto dto1;
// getters and setters go here...
public boolean isDomainEntityValid() {
// a little bit of logic goes here
}
}
public class Command {
public void execute(Context context) {
// do its logic in here
}
}
DTO 和 DomainEntity 只有 setter 和 getter 以及非常简单的验证方法(例如isFirstNameValid()
)。
Context 对象中确实有逻辑——毕竟,它检查上下文是否一致,上下文是否完整,等等。
在对命令对象进行单元测试时,我很清楚应该模拟出上下文 - 但是实体和 dto 呢?我应该嘲笑他们吗?如果是这样,我将不得不做很多像下面这样的代码
doReturn(1L).when(domainEntity1).getId();
doReturn("phil").when(domainEntity1).getName();
换句话说,必须定义 getters 方法的许多行为。
所以,底线:我应该在对对象进行单元测试时模拟域实体和 DTO 吗?