SpringData上的Mockito不匹配方法签名findAll(可分页)

时间:2018-05-15 08:21:58

标签: spring-data mockito spring-data-mongodb

这令人费解,奇怪的是我的搜索没有得到任何答案。 我有一个非常简单的SpringData Mongo存储库,我正在尝试使用这样的存储库测试Controller。控制器调用存储库上的findAll(Pageable),所以我希望使用Mockito来模拟这样的调用:

Page<Idea> page = new PageImpl<Idea>(
            IntStream.range(1, 10)
            .mapToObj(i -> Idea.builder().title("idea-" + i).build())
            .collect(Collectors.toList()));

when(repo.findAll(any(Pageable.class))).thenReturn(page);

但这会导致令人费解的编译错误:

  

MongoRepository类型中的方法findAll(Sort)不适用于参数(Matcher&lt; Pageable&gt;)

显然Mockito采用了错误的方法,但为什么呢? Pageable是一个接口,它不会扩展Sort!我还尝试在存储库中定义findAll(Pageable)抽象方法,但它报告了类不匹配:Matcher<Pageable>(调用)与Pageable(定义)不匹配。

我迷路了......

1 个答案:

答案 0 :(得分:0)

噢!找到一个解决方案,可能是其他人会发现这个有用。

罪魁祸首是关于我使用的匹配器方法:我上面使用的IMPORT_TABLE_STATS来自any(),而不是org.hamcrest.Matchers。我相信我的IDE没有选择正确的IDE,因为后者现在已被弃用,而不是org.mockito.Matchers