如何在方法中模拟本地数组列表
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
的过滤结果正确无误。
我正在尝试对此方法进行单元测试
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
的过滤结果正确无误。