我有一段代码,内容如下:
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)