Neredeyse hiçbir şey vs: Basit vakalarda bunlar tam olarak aynı davranırlar. when
sözdizimi İngilizce dilbilgisi kurallarına daha çok benzer.
Neden "neredeyse"? when
stilinin aslında authenticationService.login
numaralı aramayı içerdiğini unutmayın. Bu satırda değerlendirilen ilk ifade budur, bu nedenle, when
numaralı çağrıya yapılan çağrı sırasında, hangi davranışa sahip olursanız olun. Çoğu zaman, burada sorun yok: Metod çağrısı, stubbed davranışa sahip değildir, bu nedenle Mockito sadece bir kukla değer döndürür ve iki çağrı tam olarak eşdeğerdir.
- sen zaten stubbed tutumu aşırı ediyoruz özellikle Bir Yanıt çalıştırmak veya aralarına casus çalışıyoruz bir özel durum
- atmak: Ancak, bu aşağıdakilerden biri doğruysa durum olmayabilir
when().thenThrow()
tehlikeli yöntemi çağırmak ve testinizi kapalı atacağım oysa bu gibi durumlarda önemsiz olmayan bir uygulamaya
ile doThrow
, when(authenticationService)
arayıp tüm tehlikeli davranışı devre dışı kalır.
(Tabii ki, boşluk yöntemleri için, ayrıca -the when
sözdizimi bir dönüş değeri olmayan derlemek olmaz doThrow
kullanmanız gerekir. Başka seçenek yok yok.)
Böylece doThrow
daima biraz Bir kural olarak daha güvenli, ancak when().thenThrow()
biraz daha okunabilir ve genellikle eşdeğerdir.
"doThrow (...) için temel neden" (...) "değeri – BretC
@ BretC değerini döndürmediği yöntemlerde olduğunu düşünmüştüm Evet, doVerb geçersiz yöntemlerle çalışmak için çalışıyor, ancak hiç bir şey yok o; 'ne zaman' sadece derleme yapmaz. Ben birçok ilgili soruları gördüğümden daha ince farklara odaklanırdım. Hepinize teşekkürler - bende düzenleyeceğim. –