Как сопоставить "любой" тип параметра при макете частного метода в 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)
Работает как положено.