gpt4 book ai didi

java - Mockito实体管理器返回namedQuery

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:27 25 4
gpt4 key购买 nike

所以我想标题说明了一切,如果有人可以更好地帮助其他人,只需告诉我更新标题,所以我对 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 中遇到空指针异常,如何正确模拟实体管理器,以便在创建命名查询时它返回我想要的内容

最佳答案

这是单参数方法的设置。您需要的是:

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

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

关于java - Mockito实体管理器返回namedQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54824167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com