【发布时间】:2017-03-17 14:17:33
【问题描述】:
我需要对适用于 X 类型对象的某个方法进行单元测试。X 对象有很少的普通字段,如 String、int 等,但它也有一个 Y 类型列表。这种 Y 类型也很复杂.为了让我的问题更加困难,假设 Y 类型有另一个 Z 类型列表。
理想情况下,我需要模拟对象 X,但告诉它在内部注入另一个类型为 Y 的模拟,它也应该向自身(对 Y)注入另一个模拟 Z。我该怎么做?
如果我有这么多少级别的模拟,我应该如何避免编写 20 个规范来说明这些模拟在调用它们的方法时应该实际返回什么?
或者这是一种我应该使用构建器并实际构建真实对象的问题?
非常感谢, 鲍勃。
编辑: 只是我脑海中的示例用法代码:
public String produceImportantStringOfImportantData(ObjectX x) throws ParseException {
StringBuilder textResult = new StringBuilder();
List<ObjectY> listOfY = x.getListOfY();
if (listOfY.isValid()) {
for (ObjectY y : listOfY) {
for (ObjectZ z : y.getListOfZ()) {
textResult.append("<font color='green'>").append(z.getField2).append("</font>").append(": ").append(z.getSomething())
.append(" Label : ").append(z.getParentComponent.getField()))
.append(" some important labels: ").append(z.getField()))
.append(" some important labels ").append(y.getAnotherField))
.append(" different, important label: ").append(y.getField()))
.append("<br/>");
}
}
}
return textResult.toString();
}
【问题讨论】:
-
请展示一个代码示例。
-
手动连接的 HTML 是邪恶的。
<font>标签也是如此。又是 1997 年吗?
标签: java unit-testing