有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用ArgumentMatchers将任何队列告知Mockito?

我试图模仿以下方法:

@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>

如何匹配队列


共 (1) 个答案

  1. # 1 楼答案

    使用参数匹配器的通用版本ArgumentMatchers.any()。在java 7之前的版本中,需要指定如下类型:

    ArgumentMatchers.<Queue<EcomImageMetadata>>any()
    

    如果您使用的是Java8+,只需使用:ArgumentMatchers.any()