我在以下情况下使用 jmockit 时遇到问题。在网上做了一个研究,但还找不到答案。
在记录阶段,我正在对部分模拟的对象设置期望。在这样做的时候,我想模拟一个带有单个参数的私有方法。但我并不真正关心该参数值。我想将该特定私有方法的所有调用与传递给它的任何参数实例相匹配。我如何在Jmockit中做到这一点。有办法吗?
new Expectations(student) {
{
Deencapsulation.invoke(student, "setDepartment", (Department) any);
result = new Delegate<Student>() {
public void setDepartment(Department dept) {
System.out.println("Mocked setDepartment() methodd.....");
}
};
}
};
在上面的代码中,(Department) any
不能传递,因为Deencapsulation.invoke(...)
方法不接受null
值。
请注意,any
字段的 API 文档说:
"在调用不可访问的方法或构造函数时(例如,使用 Deencapsulation.invoke(Object, String, Object...)),请改用 withAny(T)。
也就是说,您需要将withAny(Department.class)
与invoke(...)
调用一起使用。
从JMockit v1.49开始,我使用:
withInstanceOf(Department.class)
它按预期工作。