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

Ale*_*ent 3 jmockit partial-mocks private-methods

我在使用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.....");
            }
        };
    }
};  
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,(Department) any不能传递,因为Deencapsulation.invoke(...)方法不接受null值.

Rog*_*rio 7

注意API文档any现场说:

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

也就是说,您需要使用withAny(Department.class)invoke(...)呼叫.