Как сопоставить "любой" тип параметра при макете частного метода в Jmockit

У меня проблема при использовании 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 ответа

Решение

Обратите внимание на документацию API для any поле говорит:

"В вызовах недоступных методов или конструкторов (например, с Deencapsulation.invoke(Object, String, Object...)) используйте взамен withAny(T)".

То есть вам нужно использовать withAny(Department.class) с invoke(...) вызов.

Начиная с JMockit v1.49, я использую:

      withInstanceOf(Department.class)

Работает как положено.

Другие вопросы по тегам