ブルーノ・ミゲル:
タイトル状態として、私はverifyPrivateを呼び出すことができますが、それは常に私がそれに間違ったパラメータを渡しても、私の成功を与えます。
実際の例
@RunWith(PowerMockRunner.class)
@PrepareForTest({MyService.class})
public class MyServiceTest {
@InjectMocks
MyService service;
@Mock
OperationSivRepo operationSivRepo;
@Test
public void getNbInscriptions_should_call_getNbOperationsSiv_with_OPERATION_INSCRIPTION_GAGE() throws Exception {
// GIVEN
Role role = Role.ADMINISTRATEUR;
String operator = "operator";
SivDto sivDto = new SivDto();
// WHEN
service.getNbInscriptions(operator, role, sivDto);
// THEN
verifyPrivate(service).invoke("privateMethod", operator, Role.ADMINISTRATEUR, sivDto);
}
}
今、このコードは、私のような何かをした場合でも、成功します
// THEN
verifyPrivate(service).invoke("privateMethod", "other string", Role.USER, new SivDto());
たぶん私は何かが欠けていますが、私はちょうどそれを把握することはできません。
pvpkiran:
まず。あなたはにデバッグポイントを入れていましたprivateMethod
し、それが呼び出さ取得された回数を参照してください?これはあなたにいくつかのヒントを与えているだろう。
これは、2回呼び出さなっています。お電話の際は、一度
service.getNbInscriptions(operator, role, sivDto);
あなたが使用する場合、一度
verifyPrivate(service).invoke("privateMethod", operator, Role.ADMINISTRATEUR, sivDto);
それはあなたが呼び出しメソッドに渡される引数で呼び出さなっているので、二回目、テストは常に成功します。
使用するSpy
代わりのMock
代わりに
@InjectMocks
MyService service;
使用する
@Spy
MyService myservice = new MyService(operationSivRepo)
このWiht、メソッドの2番目の呼び出しは行われず、引数が適切に検証されています。