如何在方法中模拟本地数组列表

How to mock local arraylist in method

我正在尝试对此方法进行单元测试

 public void loadProductsFromAPI() {

        List<ProductEntity> databaseProducts = productService.getAllProductsFromBd();
        CountryTenant.country.forEach((key, value) -> {

            List<ProductEntity> productsByCountry = databaseProducts.stream()
                    .filter(product -> key.toString().equalsIgnoreCase(product.getCountry()))
                    .collect(Collectors.toList());

            List<ProductDTO> productsFromAPI = productsApi.getAllProductsFromAPI(value);
            List<ProductEntity> processedProducts = productService.persistProductsFromApi(key, productsByCountry, productsFromAPI);
        });

}

我的问题是 List<ProcuctEntity> productsByCountry,该变量是在执行时创建的。我如何在我的测试用例中模拟它?

我已经使用 mockito 从 db 模拟了我的产品。

Mockito.when(productService.getAllProductsFromBd()).thenReturn(databaseProducts);

如果您发现自己试图模拟一个 ,您可能需要清理您的测试计划。在这种情况下,productsByCountry 是一个 ,它是 在您的方法中计算的 :流管道的正确性是其中的一部分你需要验证。模拟它只会绕过确保你的逻辑是正确的。

相反,return 来自模拟 productService 的适当测试数据,并确保传递给 persistProducts 的过滤结果正确无误。