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()
Matchers
aslında kullanımdan kaldırıldı, ancak ArgumentMatchers
iş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 y
olduğ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 Class
tü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 Collection
elemanın tipini kontrol edebilirsiniz.
Matchers
, ArgumentMatchers
Mockito 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 Sort
ve gibi birden fazla tür alabilir Iterable
. Mockito.any(Example.class)
Tabii ki tip güvenlik uyarısı ile de kullanabilirsiniz .