Mockito 1.9.x を使用して、Spring AOP ジョインポイントのアドバイス メソッドにある次のコードをモックしようとしています。
protected void check(ProceedingJoinPoint pjp) {
final Signature signature = pjp.getSignature();
if (signature instanceof MethodSignature) {
final MethodSignature ms = (MethodSignature) signature;
Method method = ms.getMethod();
MyAnnotation anno = method.getAnnotation(MyAnnotation.class);
if (anno != null) {
.....
}
ここに私がこれまでにモックのために持っているものがあります
ProceedingJoinPoint pjp = mock(ProceedingJoinPoint.class);
Signature signature = mock(MethodSignature.class);
when(pjp.getSignature()).thenReturn(signature);
MethodSignature ms = mock(MethodSignature.class);
Method method = this.getClass().getMethod("fakeMethod");
when(ms.getMethod()).thenReturn(method);
....
最終クラスをモック/スパイできないため、テスト クラス内で fakeMethod() を使用して Method インスタンスを作成する必要があります。デバッガーを使用すると、「this.getClass().getMethod("fakeMethod");」を呼び出した後、メソッド インスタンスが良好であることがわかります。しかし、私のcheck()メソッド内では、「メソッドメソッド= ms.getMethod();」という行を実行した後、メソッドはnullです。これにより、次の行で NPE が発生します。
when().thenReturn() を使用すると、テスト ケースではメソッド オブジェクトが null ではなく、テストしているメソッドでは null になるのはなぜですか?