Giriş
Normalde when + thenReturn Kullanımı ile aynı şeydir, ancak arada bazı ufak farklılıklar var Açıklaması şöyle. En önemli fark doReturn() çağrısının yan etkisini olmaması (no side effect).
2. Spy Nesne İle Kullanım
Açıklaması şöyle.
Normalde when + thenReturn Kullanımı ile aynı şeydir, ancak arada bazı ufak farklılıklar var Açıklaması şöyle. En önemli fark doReturn() çağrısının yan etkisini olmaması (no side effect).
You can use doThrow(), doAnswer(), doNothing(), doReturn() and doCallRealMethod() in place of the corresponding call with when(), for any method. It is necessary when you
- stub void methods
- stub methods on spy objects (see below)
- stub the same method more than once, to change the behaviour of a mock in the middle of a test.
1. void dönen metod ile kullanımı
Örnek ver2. Spy Nesne İle Kullanım
Açıklaması şöyle.
doReturn().when() avoids calling the real method in spies and already-stubbed objectsSpy olarak kullanılan nesne (yani gerçek kod) exception fırlatıyorsa bu metodu kullanmak gerekir, çünkü doReturn() çağrısının yan etkisi (side effect) yoktur.
Örnek
Elimizde şöyle bir kod olsun.
public class MyClass {
protected String methodToBeTested() {
return anotherMethodInClass();
protected String anotherMethodInClass() {
throw new NullPointerException();
}
}
Şöyle yaparız.@Spy
private MyClass myClass;
// ...
// would work fine
doReturn("test").when(myClass).anotherMethodInClass();
// would throw a NullPointerException
when(myClass.anotherMethodInClass()).thenReturn("test");
ÖrnekElimizde şöyle bir kod olsun. Bu kod exception fırlatır.
List list = new LinkedList();
List spy = spy(list);
// Will throw java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
when(spy.get(0)).thenReturn("java");
assertEquals("java", spy.get(0));
Şöyle yaparız.List list = new LinkedList();
List spy = spy(list);
doAnswer(invocation -> "java").when(spy).get(0);
assertEquals("java", spy.get(0));
Hiç yorum yok:
Yorum Gönder