摘要
我们正在尝试使用Pageable和Slice对象模拟对DB的调用,但是当应用程序调用时,模拟未返回分配的返回值。
详细信息
我们的Spring-Data Repository
中有一个Pageable方法:
public interface CatRepository extends CouchbasePagingAndSortingRepository<Cat, String> {
Slice<Cat> findAllByOwnerIdAndName(String ownerId, String name, Pageable pageable);
由于Slice
是一个接口,我们创建了一个实现其方法的MockSlice
类:
@Builder
@Data
public 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)
@SpringBootTest
public 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);
答案 0 :(得分:0)
在此问题上花费了几个小时之后。...
问题出在Intellij
中,而不是代码中。
Intellij版本是:
2018.2.3 Ultimate Edition
Build #UI-182.4323.46
Built on Sep 3 2018
在某个时候它才开始起作用。...