入力引数と戻り値を検証するために、Interface メソッドに検証アノテーションがあるとします。現時点 (V 1.9.5) で、呼び出しプロセス中にこのバリデーターを呼び出すように Mockito に指示することは可能ですか?
背景は、指定されたバリデータに違反する方法で指定されたインターフェイスをモックすることにより、開発者が非現実的なテストを作成するのを防ぐことです。
だから私が望むのは、次のようなものを登録することです
class MyAnswerInterceptor<T> implements AnswerInterceptor<T> {
@Override
public Answer<T> intercept(final Answer<T> answer) {
return new Answer<T>() {
@Override
public T answer(InvocationOnMock invocation) throws Throwable {
validateArguments(invocation);
T result = answer.answer(invocation);
validateReturnValue(result);
return result;
}
}
}
}
特定のモックのすべての回答で呼び出されます。これはまったく可能ですか?コードを調べて、ある時点で(リフレクションなどを使用しても)ハッキングできるかどうかも確認しましたが、インスタンスの作成とロジックが絡み合っているため、目的を達成することはほとんど不可能です(つまりのようなものMockHandler mockHandler = new MockHandlerFactory().create(settings);
は、全体にパッチを適用して展開することなく、フックしてカスタムのものを上に置くことを不可能にします...)
どんな洞察も高く評価されます:-)