EasyMockのドキュメントは非常に明確です
3つのオブジェクトメソッドequals()、hashCode()、およびtoString()の動作は、モックオブジェクトが作成されたインターフェイスの一部であっても、EasyMockで作成されたモックオブジェクトでは変更できません。
私がテストしようとしているコードは、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でこれらのオブジェクトメソッドをオーバーライドできない理由など)。より良い解決策はありますか?