Менеджер сущностей Mockito возвращает namedQuery - PullRequest
0 голосов
/ 22 февраля 2019

так что я думаю, что заголовок говорит сам за себя, если кто-то может помочь другим, просто скажите мне обновить заголовок, поэтому моя проблема с Mockito заключается в том, что у меня есть код вроде

List<TimeZone> timeZones = entityManager
            .createNamedQuery("get.Alltimezone", TimeZone.class).getResultList();

, и яхочу, чтобы он возвращал все часовые пояса, но я получаю исключение нулевого указателя, потому что когда я создаю именованный запрос с макетом, конечно, я получу ноль, когда вызывается .getResultList, и мне нужна помощь, чтобы исправить то, что я пытался сделать в моемпротестируйте это

        Query query = mock(Query.class);
    when(caseSetTimezone.entityManager.createNamedQuery(anyString())).thenReturn(query);

    List<TimeZone> captureTimezone;
    ArgumentCaptor<TimeZone> argumentCaptor = ArgumentCaptor.forClass(TimeZone.class);
    verify(caseSetTimezone.entityManager , times(1)).persist(argumentCaptor.capture());
    captureTimezone = argumentCaptor.getAllValues();

    assertThat(captureTimezone.get(0).getTimezone()).isEqualTo("Europe/Athens");

, но, похоже, это тоже не работает. Я всегда получаю исключение пустого указателя в createNamedQuery. Как правильно посмеяться над менеджером сущностей, чтобы при создании именованного запроса он возвращал то, что мне нужно?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

поэтому моя проблема заключалась в том, что я пытался вернуть запрос, а не TypeQuery, так что это может помочь кому-то

TypedQuery query = mock(TypedQuery.class);

    when(caseSetTimezone.entityManager.createNamedQuery("get.Alltimezone" , TimeZone.class)).thenReturn(query);
0 голосов
/ 22 февраля 2019

Это настройка для метода с одним параметром.Что вам нужно:

Query query = mock(Query.class);
    when(caseSetTimezone.entityManager
      .createNamedQuery(anyString(), any(Class.class)).thenReturn(query);

Конечно, EntityManager также должен быть издевательским.

...