为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Mockito 模拟具有 Pageable 和 Slice 接口的 DB 调用时出现

使用 Mockito 模拟具有 Pageable 和 Slice 接口的 DB 调用时出现

一只名叫tom的猫 2022-01-19 09:26:18
概括我们正在尝试使用 Pageable 和 Slice 对象模拟对 DB 的调用,但是当应用程序调用时,模拟没有返回分配的返回值。详细介绍我们有一个 Pageable 方法Spring-Data Repository:public interface CatRepository extends CouchbasePagingAndSortingRepository<Cat, String> {  Slice<Cat> findAllByOwnerIdAndName(String ownerId, String name, Pageable pageable);由于Slice是一个接口,我们创建了一个MockSlice实现其方法的类:@Builder@Datapublic class MockSlice implements Slice{...Mockito在为此调用创建测试时,我们编写了以下代码: Slice<Cat> slice = MockSlice.builder().content(new LinkedList()).build();  when(catRepository.findAllByOwnerIdAndname(anyString(), anyString(), any(Pageable.class))).thenReturn(slice);测试类有这些注释:@RunWith(MockitoJUnitRunner.class)@SpringBootTestpublic class GetCatsTest{但是,在服务类中,当单元测试运行时,以下slice是null:  Pageable pageable = PageRequest.of(pageNumber, 1000, Sort.by("id"));  Slice<Cat> slice = catRepository.findAllByOwnerIdAndName("23423", "Oscar", pageable);  catList = slice.getContent();  <-- NullpointetException here编辑为了确保接线正确,并且整个 conf 工作正常,我在存储库中添加了另一个不可分页的方法,对其进行了模拟并且工作正常:在测试类中:LinkedList<Cat> list = new LinkedList<>();list.add(new Cat("fasdfasf", "Oscar"));when(catRepository.findAllByOwnerIdAndName(anyString(), anyString())).thenReturn(list);在存储库界面中:List<Cat> findAllByOwnerIdAndName(String ownerId, String name);
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

在这个问题上花了几个小时后......


问题出在代码中Intellij而不是在代码中。


Intellij 版本是:


2018.2.3 Ultimate Edition


Build #UI-182.4323.46


Built on Sep 3 2018

在某个时候,它才开始起作用....


查看完整回答
反对 回复 2022-01-19
  • 1 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信