2.1 @Sahte açıklama

Mockito'da sahte nesnelerle çalışmanın iki yolu vardır. Birincisi tamamen sanal bir nesne yaratmak , ikincisi ise mevcut bir nesneyi bir paketleyiciye sarmak. İlki ile başlayalım.

Tamamen sanal bir nesne oluşturmak için şu kodu yazmanız gerekir:

ClassName variable name = Mockito.mock(ClassName.class);

Örnek olarak sahte bir ArrayList sınıfı oluşturalım:

@ExtendWith(MockitoExtension.class)
class MockTest {
    @Test
    public void whenNotUseMockAnnotation_thenCorrect() {
        List mockList = Mockito.mock(ArrayList.class);
        //these methods won't do anything - they are stubs
        mockList.add("one");
        mockList.add("two");
    }
}

Bu örnekte, sahte bir ArrayList oluşturuyoruz ve ona bir referansı mockList değişkeninde saklıyoruz. Bu nesnenin yöntemleri hiçbir şey yapmaz.

Bu arada, bunun için özel bir açıklama olduğundan, bu kod daha da kısa yazılabilir @Mock.

@ExtendWith(MockitoExtension.class)
class MockTest {
    @Mock
    List mockList;

    @Test
    public void whenNotUseMockAnnotation_thenCorrect() {
        //these methods won't do anything - they are stubs
        mockList.add("one");
        mockList.add("two");
    }
}

İkinci durumda, MockitoExtensionsınıf kodunun kendisini analiz edecek ve gerekli taslakları oluşturacaktır. Yöntemi çağırmanız gerekmez Mockito.mock(). Bir açıklama ve sanal nesne hazır. Güzellik.

2.2 @Casus notu

Mockito'daki ikinci önemli nesne türü, varolan nesnelerin üzerindeki sarmalayıcılardır. Bir yandan mevcut sınıfların kullanılmasına ve diğer yandan bu tür nesnelerin tüm yöntemlerine ve değişkenlerine yapılan çağrıların kesilmesine: gerektiğinde çalışmalarını düzeltmeye izin verirler. Mock nesneleri kadar sık ​​kullanılırlar.

Bir nesne üzerinde bir sarmalayıcı oluşturmak için kodu yazmanız gerekir:

ClassName variable name = Mockito.spy(an object);

ArrayList sınıfı etrafında sarmalayıcı içeren bir örnek:

@ExtendWith(MockitoExtension.class)
class SpyTest {
    @Test
    public void whenMockAnnotation() {
        List<String> mockList = Mockito.spy(new ArrayList<String>());
        //these methods will work!
        mockList.add("one");
        mockList.add("two");
    }
}

En basit haliyle, bir sarmalayıcı nesneye yapılan çağrı, çağrıları kendi içinde tuttuğu referans olan orijinal nesneye yönlendirir . Her şey orijinal nesnede olduğu gibi çalışacaktır.

Ek açıklamayı kullanarak bir sarmalayıcı da oluşturabilirsiniz - @Spy.

@ExtendWith(MockitoExtension.class)
class SpyTest {
    @Spy
    List mockList = new ArrayList<String>();

    @Test
    public void whenMockAnnotation() {
        // these methods will work!
        mockList.add("one");
        mockList.add("two");
    }
}

Bu iki kod örneği eşdeğerdir.