[英]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.