Mockito EntityManager返回名称Query



所以我想标题说明了一切,如果任何人都可以帮助他人做得更好,只是告诉我更新标题,所以我对Mockito的问题是我有一个代码,例如

List<TimeZone> timeZones = entityManager
            .createNamedQuery("get.Alltimezone", TimeZone.class).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中获得null指针异常,我该如何正确模拟Entity Manager,以便当我创建命名查询时,它会回馈我想要的

这是一个单品方法的设置。您需要的是:

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

当然,EntityManager也需要是一个模拟。

,所以我的问题是我尝试返回查询而不是类型,所以这可能是如何帮助某人的

TypedQuery query = mock(TypedQuery.class);
    when(caseSetTimezone.entityManager.createNamedQuery("get.Alltimezone" , TimeZone.class)).thenReturn(query);

相关内容

  • 没有找到相关文章

最新更新