Mockito, возвращающий ноль, когда для метода используются аргументы Any. - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть метод ниже, который я хочу использовать:

ProductArray productsArray;
productsArray = dataService.getProducts(ProductFilter pf, Date date1, Date date2, boolean matured);

В моем тестовом классе у меня ниже

ProductArray productsArrayTest = getProductsArrayForTest();
Mockito.when(dataServiceMock.getProducts(Mockito.any(ProductFilter.class), Mockito.any(Date.class), Mockito.any(Date.class), Mockito.any(Boolean.class))).thenReturn(productsArrayTest);

Однако в этом тесте productsArray возвращается как null;

Мокито выдает следующее предупреждение

[MockitoHint] 1. Unused... -> at 
com.company.util.TestProduct.testProductLoad(TestProduct.java:157)
[MockitoHint]  ...args ok? -> at 
com.company.datastore.ProductLoader.processAll(ProductLoaderProcess.java:158)

В чем может быть причина этого?

Редактировать:

private ProductArray getProductsArrayTest() {
    ProductArray pa = new ProductArray();
    Product product = createProduct();
    pa.add(product);
    return pa;
}

private Product createProduct() {
    Product p = new Product();
    p.setPrice(1.23);
    return p;
}

1 Ответ

1 голос
/ 23 апреля 2020
  • Редактировать после первого комментария - я вижу, что вы вызываете метод getProductsArrayForTest () при определении getProductsArrayTest (). Проверьте, если это только ошибка в посте или даже в коде. Однако вот код и тест завершается успешно.

    public class Product {
     double price;
     public Product() {
    
     }
     public double getPrice() {
      return this.price;
     }
     public void setPrice(double value) {
      this.price=value;
     }
    }
    

    ProductArray.class

    import java.util.ArrayList;
    import java.util.List;
    
    
    public class ProductArray {
     private List<Product> productList;
     public ProductArray() {
      productList=new ArrayList<Product>();
    
     }
     public void add(Product product) {
      this.productList.add(product);
     }
     public List<Product> getProductList(){
      return this.productList;
     }
    }
    

    ProductTest.class

    public class ProductTest {
     @Test
     public void testProduct() {
      DataService dataserviceMock = Mockito.mock(DataService.class);
      ProductArray productsArrayTest = getProductsArrayTest();
      Mockito.when(dataserviceMock.getProducts(Mockito.any(ProductFilter.class), Mockito.any(Date.class), Mockito.any(Date.class), Mockito.anyBoolean())).thenReturn(productsArrayTest);
      assertEquals(1, dataserviceMock.getProducts(null , null , null , false).getProductList().size());
     }
     private ProductArray getProductsArrayTest() {
         ProductArray pa = new ProductArray();
         Product product = createProduct();
         pa.add(product);
         return pa;
     }
    
     private Product createProduct() {
         Product p = new Product();
         p.setPrice(1.23);
         return p;
     }
    
    }
    
...