3

在以下场景中使用 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值。

4

2 回答 2

8

请注意该字段的API 文档any说:

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

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

于 2014-11-18T15:59:31.487 回答
0

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

withInstanceOf(Department.class)

它按预期工作。

于 2021-09-11T03:01:55.023 回答