mock函数究竟做了什么?

时间:2014-05-18 09:11:45

标签: java sockets mocking

我在一个示例项目中找到了这段代码,之前我从未见过这样的代码。

private final SocketFactory mockedSockFactory = mock(SocketFactory.class)

究竟是什么意思? mock做了什么?

我猜测它正在创建这个类的假的或默认的对象,但它在哪里得到它的参数?它在哪里定义?它来自什么?

2 个答案:

答案 0 :(得分:1)

这是您班上statically imported的静态方法。你可能有像

这样的东西
import static org.mockito.Mockito.mock;

import static org.mockito.Mockito.*;

在你班上。它也可能来自另一个嘲弄框架,而不是Mockito。

无论如何,这只是一个常规静态方法,记录在案。阅读其API文档。

答案 1 :(得分:1)

就像你在问题中提到的那样,它会创建一个对象的模拟(假)实例。

这样做的好处在于它允许您创建强大的测试,可以专注于单个对象,而不必过于担心它的关系和资源需求。例如(使用更现代的注释方法):

@InjectMocks UserService service = new UserService();
@Mock UserRepository repository = new UserRepository();

public void testDelete() {
    List<User> testUsers = generateTestUsers();
    when(repository.findAllUsers()).thenReturn(testUsers);
    service.deleteUsers();

}

以上是测试服务级别方法的示例,而不必担心数据库依赖性。这意味着测试是可重复的,高效的,并且更多地关注您要测试的功能。

有关更多详细信息,请参阅此链接: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html