NullPointerException при имитации вызова БД с Pageable и Slice Interfaces с Mockito - PullRequest
0 голосов
/ 13 ноября 2018

Резюме

Мы пытаемся смоделировать вызов БД с объектами Pageable & Slice, но макет не возвращает назначенное возвращаемое значение при вызове приложением.

Подробнее

У нас есть метод Pageable в нашем Spring-Data Repository:

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

EDIT

Чтобы убедиться, что проводка правильная, а общий конфиг работает нормально, я добавил в репозиторий еще один метод без разбивки на страницы, сменил его, и он работает нормально:

В тестовом классе:

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 Ответ

0 голосов
/ 13 ноября 2018

Потратив несколько часов на эту проблему ....

Проблема была в Intellij, а не в коде.

Версия Intellij:

2018.2.3 Ultimate Edition

Build #UI-182.4323.46

Built on Sep 3 2018

В какой-то момент это только начало работать ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...