如何在Java中模拟嵌套方法

时间:2017-10-18 07:37:22

标签: java unit-testing mockito

为了测试我的程序,我需要模拟一个方法调用,如:

entityManager.createQuery("SELECT...", Integer.class).getSingleResult()

createQuery部分返回TypedQuery<Integer>,但实际上我只想返回一个整数:1。 目前我正在使用Mockito来创建我的模拟,我对此很陌生。

有没有办法测试这个?

谢谢!

2 个答案:

答案 0 :(得分:1)

假设您有类EntityManager,Query。您可以像下面那样模拟您的测试。 (mock(),any(),when()...方法在Mockito中)

int result = 1;
Query query = mock(Query.class);
EntityManager entityManager = mock(EntityManager.class);

when(entityManager.createQuery(any(), any()).thenReturn(query);
when(query.getSingleResult()).thenReturn(result);

答案 1 :(得分:0)

模拟EntityManager,然后您可以预先定义返回值。 Mockito.doReturn(1).when(entityManagerMock).createQuery(any(String.class), any());