Документация EasyMock довольно ясно показывает, что
Поведение для трех методов объекта equals (), hashCode () и toString () не может быть изменено для объектов Mock, созданных с помощью EasyMock, даже если ониявляются частью интерфейса, для которого создается Mock Object.
Код, который я пытаюсь протестировать, использует equals () для сравнения моего фиктивного объекта с чем-то другим.Я хотел бы сделать что-то вроде
expect(mock.equals(obj)).andReturn(false);
Когда я это сделаю, я получу исключение IllegalStateException.Там нет ничего удивительного, учитывая то, что написано в документации.
У кого-нибудь есть предложения по альтернативному подходу?Есть ли другой способ управления тем, что будет возвращать фиктивный объект при вызове equals ()?Я полагаю, что я могу создать подкласс, который переопределяет equals ()
class FooImplOverrideEquals extends FooImpl {
public boolean equals;
public boolean equals(Object obj) { return equals; }
}
FooImplOverrideEquals mock = createMock(FooImplOverrideEquals.class);
mock.equals = false; // instead of expect(mock.equals(obj)).andReturn(false);
, но это кажется не элегантным.Я чувствую, что упускаю что-то важное (например, причину, по которой EasyMock не позволяет вам переопределять эти методы объекта).Есть ли лучшее решение?