使用Mockito模拟EntityManager的find方法?

时间:2016-05-03 16:23:04

标签: java spring java-ee mockito

我有一段代码如下:

entityManager.find(SomeClass.class,Long id,OtherClass.class,Session session);

我可以使用Mockito来模拟它并返回所需的值吗?

由于

2 个答案:

答案 0 :(得分:3)

是的,像这样的事情会这样做:

import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import org.junit.Test;

....

   @Test
   public void yourMockTest(){

    // create your Mock
    EntityManager entityManager = mock(EntityManager.class);

    // instantiate your args
    Class clazz = SomeClass.class;
    Long id = 1000L;
    Class otherClazz = OtherClass.class
    Session session = new SessionImpl();

    // instantate return object
    SomeClass returnMe = new SomeClass();

    // mock
    when(entityManager.find(any(), any(), any(), any()).thenReturn(returnMe);

    // execute
    Object returned = entityManager.find(clazz, id, otherClazz, session);

    // assert
    assertEquals(returnMe, returned);
   }

编辑: chill说明您可能会在其他课程中处理EntityManagerThis old question演示了如何使用Mockito将模拟注入其他对象。

答案 1 :(得分:2)

简短的回答是肯定的。 EntityManager是一个界面,与Mockito完全“可模拟”。它是这样的:

EntityManager mocked = mock(EntityManager.class);
when(mocked.find(any(), any(), any(), any()).thenReturn(yourMockedValue)