繁体   English   中英

使用Mockito模拟EntityManager的find方法?

[英]Mocking the find method of EntityManager using Mockito?

我有一段代码是这样的:

entityManager.find(SomeClass.class,长ID,OtherClass.class,会话会话);

我可以使用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将模拟注入其他对象。

简短的回答是。 EntityManager是一个接口,与Mockito完全“可模拟”。 就像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM