14 Şubat 2019 Perşembe

Mockito @Mock Anotasyonu - Mock Nesne Yaratır

Giriş
Şu satırı dahil ederiz. Mock nesne yaratmak için kullanılır. Bu anotasyon ile Mockito.mock() metodunu kullanmaya gerek yok.
import org.mockito.InjectMocks;
import org.mockito.Mock;
Bu anotasyonun çalışması için testin
- JUnit 4 kullanıyorsak Runner olarak MockitoJUnitRunner'ın kullanılması gerekir.
- JUnit 5 kullanıyorsak ExtendWith olarak MockitoExtension'ın kullanılması gerekir.

Eğer bu ikisini de kullanmıyorsak şu metodu @Before olarak işaretli metod içinde çağırmak gerekir.
MockitoAnnotations.initMocks(this);
Bu yazıyla ilgili olarak Mockito @InjectMocks Anotasyonu yazısına bakabilirsiniz.

Örnek
Şöyle yaparız. Test MockitoJUnitRunner veya MockitoExtension kullanmadığı için MockitoAnnotations.initMocks(this); çağrısı yapılıyor
public class PaidListTest {

  @Mock
  PaymentService paymentService;

  @Before
  public void setUp() {
    MockitoAnnotations.initMocks(this);
    mapperObj = new ObjectMapper();
    List<PaymentGetServiceDO> response = new ArrayList<PaymentGetServiceDO>();
  }
  @Test
  public void getPaidList() {
    List<PaymentGetServiceDO> response = null;
    try {
      response = paymentService.setPaidStatusList();          
      if(response != null && response.size() > 0){
        for(int i = 0; i < response.size(); i++){
          assertNotNull(response.get(i).getAgentcode());
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
extraInterfaces Alanı
Mock nesnemizin başka arayüzlerden de kalıtmasını istiyorsak kullanırız.

Örnek
Şöyle yaparız
//Create a mock that implements Bar interface
@Mock(extraInterfaces = {Bar.class})
private Foo foo;
Aynı şeyi kodla şöyle yaparız
Foo mock = Mockito.mock(Foo.class, withSettings().extraInterfaces(Bar.class));
Örnek
Şöyle yaparız
@Mock(extraInterfaces = Closeable.class)
private Foo foo;


Hiç yorum yok:

Yorum Gönder