Closed1

[解決事件] Mockitoのでメソッドの戻り値を指定するとNullPointerExceptionが発生する

こばちきこばちき
interface Specification {
  boolean isSatisfiedBy(User user);
}

このようなインターフェイスがあって、そのインターフェイスを使用しているメソッドのテストを記述している。

@Test
void test() {
  ...
  Specification specification = mock(Specification.class);
  when(specification.isSatisfiedBy(any())).thenReturn(true);
  ...
}

テストは成功していた。

仕様変更で`isSatisfiedByの引数にint型のrevisionが追加された。

interface Specification {
  boolean isSatisfiedBy(User user, int revision);
}

で、単純にモックの引数にany()を追加した。

@Test
void test() {
  ...
  Specification specification = mock(Specification.class);
  when(specification.isSatisfiedBy(any(), any())).thenReturn(true);
  ...
}

するとwhen(specificationのところで、NullPointerExceptionがでた。

ググったところ、文字列やint型はそれに合ったanyがあるとのこと、when(specification.isSatisfiedBy(any(), anyInt()))にしたところ、テストが成功した。

このスクラップは2021/12/17にクローズされました