Kali ini Tedi nak periksa (verify) sesuatu function dipanggil dalam service yang sedang kita unit test.

Jadi langkah pertama kita spy-kan dia.

public class OutletCheckAplusBizTest {
public static final String COMMON_OUTLET_ID = "outletId";
public static final String APLUS_OUTLET_ID = "outletId";
@Mock
AntRestfulApi antRestfulApi;
@Mock
OutletDetailService outletDetailService;
@Mock
Logger log;
@Spy
@InjectMocks
OutletCheckBiz outletCheckBiz;

Seterusnya kita sudah boleh periksa function-nya sendiri. Harus diingat bahawa function itu haruslah public atau minimum protected. Jika private maka kenalah cari jalan lain.

@Test
public void testProcess() {
when(antRestfulApi.callMerchantOutletCreate(any(MerchantOutletCreateRequest.class))).thenReturn(null);
when(antRestfulApi.callMerchantOutletQuery(any(MerchantOutletQueryRequest.class))).thenReturn(null);
when(outletDetailService.updateOutletDetail(any(OutletDetail.class), anyLong())).thenReturn(0);

outletCheckBiz.process(new OutletPendingBean());
verify(outletCheckBiz, Mockito.times(1)).createNewOutlet(any(OutletPendingBean.class));
}

Mudah kan? Antara library yang diimport ialah:

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;

 


Kiriman ini ditaip pada 20200428, adalah mengenai contoh mudah menggunakan @Spy annotation untuk memeriksa function service yang sedang kita test. Sudah tentulah penyelesaian ini takkan memenuhi semua masalah ketika menulis unit test, tetapi ini salah satu contoh yang berhasil dalam coding Tedi.