这令人费解,奇怪的是我的搜索没有得到任何答案。
我有一个非常简单的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
(定义)不匹配。
我迷路了......
答案 0 :(得分:0)
噢!找到一个解决方案,可能是其他人会发现这个有用。
罪魁祸首是关于我使用的匹配器方法:我上面使用的IMPORT_TABLE_STATS
来自any()
,而不是org.hamcrest.Matchers
。我相信我的IDE没有选择正确的IDE,因为后者现在已被弃用,而不是org.mockito.Matchers
。