döndürür.mockito thenReturn ben Mockito içinde bu var aynı örneği
thenReturn
yöntemi neden ServiceMock
yeni dönmez?
döndürür.mockito thenReturn ben Mockito içinde bu var aynı örneği
thenReturn
yöntemi neden ServiceMock
yeni dönmez?
thenReturn
yöntemi her zaman kendisine iletilenleri döndürecektir. new Servicemock()
kodu, thenReturn
numaralı çağrıya çağrılmadan önce yürütülmektedir. Oluşturulan ServiceMock
daha sonra thenReturn
'a aktarılıyor. Bu nedenle, thenReturn
, bir oluşturma mekanizması olmayan ServiceMock
mutlak bir örneğine sahiptir.
bir yeni bir örneğini temin etmek gerekirse
, Sen bu gerçekleşirse neden anlamak için farklı tablolar içine planı ayrı isteyebilirsiniz thenAnswerwhen(mockedMergeContext.createNewEntityOfType(IService.class))
.thenAnswer(new Answer<IService>() {
public IService answer(InvocationOnMock invocation) {
return new ServiceMock();
}
});
Günümü kurtardığım için çok teşekkürler :) –
kullanın.
Service svc = new ServiceMock();
when(mockedMergeContext.createNewEntityOfType(IService.class)).thenReturn(svc);
Şimdi neden çalışmadığını görüyor musunuz? :)
Her zaman örnek bekletmeyi svc'ye döndürüyor, yöntem her çağrıldığında, new ServiceMock()
yeniden değerlendirilmez. //docs.mockito.googlecode:
Haklısınız! Teşekkürler! – myborobudur
Java 8'de Lambdas ile sadece
when(mockedMergeContext.createNewEntityOfType(IService.class)).thenAnswer(invocation -> new ServiceMock());
Dolayısıyla, sadece bir [geri arama] (http ile stubbing deneyin .thenAnswer(invocation -> new MyMock());
ile
.thenReturn(new MyMock());
yerine kullanabilirsiniz .com/hg/en/org/mockito/Mockito.html # 11) – McDowell
Teşekkürler! Bu çalışır – myborobudur