简体   繁体   English

当任何任何 arguments 用于方法时,Mockito 存根返回 null

[英]Mockito stubbing returning null when any Any arguments are used for method

I have the below method which I want to sub:我有以下方法,我想子:

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

In my test class I have below在我的测试 class 我有以下

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);

However in this test productsArray returns as null ;然而在这个测试中productsArray返回为null

Mockito gives the below warning Mockito 给出以下警告

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

What could be the reason for this?这可能是什么原因?

Edit:编辑:

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;
}
  • Edit after the first comment - I see that you call the method getProductsArrayForTest() while you define getProductsArrayTest().在第一条评论之后编辑 - 我看到您在定义 getProductsArrayTest() 时调用了方法 getProductsArrayForTest()。 Check if it is only a mistake in the post or even in the code.检查它是否只是帖子中的错误,甚至是代码中的错误。 However here is the code and the test succeeds.但是这里是代码并且测试成功了。

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

    ProductArray.class 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产品测试.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; } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM