Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mock函数到底做什么?_Java_Sockets_Mocking - Fatal编程技术网

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();

}