我正在尝试模拟以下方法:
@Override
public void handleStorage(TradeItem tradeItem,
ProductImagesMap productImagesMap,
List<Integer> indicesToProcess,
int countProductImages,
Queue<EcomImageMetadata> ecomImageMetadataQueue,
ImageServiceType imageServiceType,
ProductImageDTO productImageDTO) throws IllegalAccessException {
这就是我正在尝试的方式:
import static org.mockito.ArgumentMatchers.*;
final Class<Integer> integerClazz = Integer.class;
final Class<EcomImageMetadata> ecomImageMetadataClazz = EcomImageMetadata.class;
Mockito.when(productImageStorageService.handleStorage(eq(mockTradeItem), eq(productImagesMap), anyListOf(integerClazz), anyInt(), anyIterableOf(ecomImageMetadataClazz), anyObject(), anyObject()))
.thenReturn(null);
我不明白为什么anyListOf(integerClazz)
起作用,但是anyIterableOf(ecomImageMetadataClazz)
引起了以下原因:
Error:(157, 152) java: incompatible types: no instance(s) of type variable(s) T exist so that java.lang.Iterable<T> conforms to java.util.Queue<org.gs1ca.dar.domain.EcomImageMetadata>
如何匹配队列?
答案 0 :(得分:2)
使用参数匹配器ArgumentMatchers.any()
的通用版本。在版本不超过7的Java中,您需要指定以下类型:
ArgumentMatchers.<Queue<EcomImageMetadata>>any()
如果您使用的是Java 8+,则只需使用:ArgumentMatchers.any()
。