Yanıtlar:
Bir tür güvenli yol vardır: ArgumentMatchers.any()bunu tür ile kullanın ve nitelendirin:
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchersaslında kullanımdan kaldırıldı, ancak ArgumentMatchersişe yaradı.
Java 8'i kullanarak any(), gelişmiş tür çıkarımından dolayı argüman veya type parametresi olmadan (statik içe aktarma varsayarak) kullanabilirsiniz . Derleyici, hedef türden (yöntem bağımsız değişkeninin türü), aslında Matchers.<AsyncCallback<ResponseX>>any()Java 8 öncesi çözüm olan demek istediğinizi biliyor .
any()maç AsyncCallback<AnyOtherType>yanı?
AsyncCallback<AnyOtherType>Bağımsız değişken türü 'AsyncCallback <ResponseX>' olsa bile kullanma derlenmemelidir.
when(x.y(any())).thenAnswer(...)örneğin, nerede yolduğunu public <T> T y(AsyncCallback<T> arg). Belki de cevabın türünü kontrol etmek daha iyi olurdu, eğer gerekli ise?
isA(). Nesne Classtüre karşılık gelen bir nesneyi tutarsa ve arabirim bunu ortaya çıkarırsa, sanırım özel bir eşleştiricide kontrol edebilirsiniz. Veya örneğin bir Collectionelemanın tipini kontrol edebilirsiniz.
Matchers, ArgumentMatchersMockito v2 ile değiştirildi
Jeneriklere izin vermek için aşağıdaki mechamizmi benimsemek zorunda kaldım:
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
Umarım bu birine yardımcı olur.
İsterseniz sadece bastırıp uyarı ekleyerek yayınlayabilirsiniz:
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
Java 'jenerik' jeneriklere izin verdiyse, aradığınız yöntem bu şekilde olabilir
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings: pre-java 8, eğer ayrı bir değişkene atayacak olsaydınız, sadece any()ıntoy'nin cevabında olduğu gibi kullanabilirsiniz . Şimdi java 8 ile, any()ayrı bir atamaya gerek kalmadan satır içi kullanılabilir.
Spring'i kullanırken de benzer bir sorun yaşadım Example:
Mockito.when(repo.findAll(Mockito.<Example<SrvReqToSupplierComment>>any()))
.thenReturn(Lists.emptyList());
Burada, yeterlilik kullanmak zorunda, b / c findAll yöntemi Sortve gibi birden fazla tür alabilir Iterable. Mockito.any(Example.class)Tabii ki tip güvenlik uyarısı ile de kullanabilirsiniz .