如何在Jmockit中模拟私有方法时匹配'any'参数类型

时间:2014-11-18 12:45:39

标签: jmockit private-methods partial-mocks

我在使用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值。

1 个答案:

答案 0 :(得分:5)

请注意any字段的API documentation表示:

“在对不可访问的方法或构造函数的调用中(例如,使用Deencapsulation.invoke(Object,String,Object ...)),请使用withAny(T)代替。”

也就是说,您需要在withAny(Department.class)来电时使用invoke(...)