如何在Jmockit中模拟私有方法时匹配“任何”参数类型

4

我在使用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 值。
2个回答

9
请注意,any字段的API文档中写道:

“在调用非可访问方法或构造函数时(例如,使用Deencapsulation.invoke(Object, String, Object...)),请改用withAny(T)。”

也就是说,在invoke(...)调用中需要使用withAny(Department.class)


0

从 JMockit v1.49 开始,我使用:

withInstanceOf(Department.class)

它按预期工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接