31 Mart 2019 Pazar

Mockito when + thenAnswer Kullanımı - Her Seferinde Farklı Sonuç Dönmek İçin

Giriş
Bu kullanım when + thenReturn ile benzer. Açıklaması şöyle. Yani thenReturn()'den farklı olarak aynı sonucu dönmek yerine her seferinde farklı bir sonuç döndürürebilir.
the difference is: answer will every time be executed. Return remembers the value we told them in the when. 
Örnek
Şöyle yaparız.
when(someMock.someMethod()).thenAnswer(new Answer() {
  private int count = 0;

  public Object answer(InvocationOnMock invocation) {
    return (count++;
  }
});
invocation.getArguments metodu
Örnek
Metod'a geçilen parametrelere erişmek için şöyle yaparız.
when(rt.exchange(anyString(), any(HttpMethod.class), any(), any()))
  .thenAnswer((invocation) -> {
     Object paramToCheck = invocation.getArguments()[3];

     if(paramToCheck instanceof String){
       return response;
     }else if (paramToCheck instanceof InfsEspecificasDTO){
       return responseInfoEsp;
     }

     return null;

  });

Hiç yorum yok:

Yorum Gönder