必须用Pagaeble的param测试Predicated annomymous Class

时间:2018-03-30 16:14:50

标签: java spring-boot junit mockito

鉴于以下方法想要使用Junit使用MOckit进行测试,但我尝试了

when(productDataDao.findAll(specObj, PagebleObj)).thanReturn(DummyMOckObj);

但这不行。有没有办法通过Mockito方法传递Pagable对象来测试匿名类测试?

public Page<Product> SearchData(Pageable pageable , ProductDTO proDto) {


        Page<Product> products=  productDataDao.findAll(new Specification<Product>() {

            @Override
            public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                List<Predicate> predicates = new ArrayList<>();

                if(null != proDto.getId() && !proDto.getId().isEmpty()) {
                    predicates.add(cb.like(root.get("id"), "%" +proData.getId().trim()) + "%"));
                }

                if(null != proData.getName() && !proData.getName().isEmpty()) {
                    predicates.add(cb.equal(root.get("name"), proData.getName()));
                }

                return cb.and(predicates.toArray(new Predicate[0]));
                predicates.toArray(new Predicate[0]) : null);
            }
        }, pageable);
        return products;
    }
    return null;
}

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

when(productDataDao.findAll(
        ArgumentMatchers.<Specification<Product>>any(), 
        eq(PagebleObj)))
        .thanReturn(DummyMOckObj);

您还应该在测试实例中注入productDataDao模拟对象。