使用Mockito模拟EntityManager的find方法



我有一段代码,内容如下:

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

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

感谢

是的,这样的东西可以做到:

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很好地说明了您可能会在其他类中处理EntityManager。这个老问题演示了如何使用Mockito将mock注入到其他对象中。

简短的回答是肯定的。EntityManager是一个接口,与Mockito完全"可模拟"。它应该是这样的:

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

相关内容

  • 没有找到相关文章

最新更新