Java mock函数到底做什么?
我在一个示例项目中发现了这段代码,以前从未见过类似的代码Java mock函数到底做什么?,java,sockets,mocking,Java,Sockets,Mocking,我在一个示例项目中发现了这段代码,以前从未见过类似的代码 private final SocketFactory mockedSockFactory = mock(SocketFactory.class) 这到底是什么意思?mock做什么 我猜它是在创建这个类的一个伪对象,或者说是默认对象,但是它从哪里得到它的参数呢?它的定义是什么?它来自于什么?它是一个静态方法,已经出现在您的类中。你可能有 import static org.mockito.Mockito.mock; 或 在你们班。它也
private final SocketFactory mockedSockFactory = mock(SocketFactory.class)
这到底是什么意思?mock
做什么
我猜它是在创建这个类的一个伪对象,或者说是默认对象,但是它从哪里得到它的参数呢?它的定义是什么?它来自于什么?它是一个静态方法,已经出现在您的类中。你可能有
import static org.mockito.Mockito.mock;
或
在你们班。它也可能来自另一个Mockito以外的mocking框架
无论如何,这只是一个常规的静态方法,有文档记录。阅读它的API文档。就像你在问题中提到的,它会创建对象的模拟(假)实例 这一功能的强大之处在于,它允许您创建功能强大的测试,这些测试可以专注于单个对象,而不必太担心它的关系和资源需求。例如(使用更现代的注释方法):
@InjectMocks UserService=new UserService();
@Mock UserRepository repository=new UserRepository();
公共void testDelete(){
List testUsers=generateTestUsers();
when(repository.findAllUsers())。然后return(testUsers);
service.deleteUsers();
}
上面是一个测试服务级别方法而不必担心数据库依赖性的示例。这意味着测试是可重复的、高效的,并且更加关注您想要测试的功能
有关更多详细信息,请参阅此链接:
import static org.mockito.Mockito.*;
@InjectMocks UserService service = new UserService();
@Mock UserRepository repository = new UserRepository();
public void testDelete() {
List<User> testUsers = generateTestUsers();
when(repository.findAllUsers()).thenReturn(testUsers);
service.deleteUsers();
}