我有一段代码如下:
entityManager.find(SomeClass.class,Long id,OtherClass.class,Session session);
我可以使用Mockito来模拟它并返回所需的值吗?
由于
答案 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
说明您可能会在其他课程中处理EntityManager
。 This old question演示了如何使用Mockito将模拟注入其他对象。
答案 1 :(得分:2)
简短的回答是肯定的。 EntityManager是一个界面,与Mockito完全“可模拟”。它是这样的:
EntityManager mocked = mock(EntityManager.class);
when(mocked.find(any(), any(), any(), any()).thenReturn(yourMockedValue)