Mockito javadoc
, Mockito.when (Object) öğesini kullanamadığınızda nadir durumlarda Neden doReturn () doReturn()
yerine kullanımın olduğunu söylüyor gibi görünüyor when()
.
Mockito.when (Nesne) 'nin her zaman saplama için önerildiğine dikkat edin, çünkü argüman tipi güvenli ve daha okunabilirdir (özellikle ardışık çağrıları saklarken).
DoReturn () işlevinin kullanışlı olduğu nadir durumlar şunlardır:
1. Bir casus üzerinde gerçek nesneleri casusluk yaparken ve gerçek yöntemleri çağırırken yan etkiler getirir
List list = new LinkedList(); List spy = spy(list);
// İmkansız: gerçek yönteme spy.get (0) adı verilir IndexOutOfBoundsException (liste henüz boş)
when(spy.get(0)).thenReturn("foo");
// Saplama için doReturn () yöntemini kullanmanız gerekir:
doReturn("foo").when(spy).get(0);
2. Önceki istisna saplamalarını geçersiz kılma:
when(mock.foo()).thenThrow(new RuntimeException());
// İmkansız: istisna-stubbed foo () yöntemi çağrılır, böylece RuntimeException oluşturulur. when(mock.foo()).thenReturn("bar");
// Saplama için doReturn () yöntemini kullanmanız gerekir:
doReturn("bar").when(mock).foo();
Yukarıdaki senaryolar Mockito'nun zarif sözdiziminin bir dengesini gösterir. Ancak senaryoların çok nadir olduğunu unutmayın. Casusluk sporadik olmalı ve istisna-stubbing'i geçersiz kılmak çok nadirdir. Genel olarak, stubbing'in geçersiz kılınmasının çok fazla stubbinge işaret eden potansiyel bir kod kokusu olduğunu belirtmiyoruz.
doReturn()
yararlı olduğu birkaç durum vardır .