我在一个示例项目中找到了这段代码,之前我从未见过这样的代码。
private final SocketFactory mockedSockFactory = mock(SocketFactory.class)
究竟是什么意思? mock
做了什么?
我猜测它正在创建这个类的假的或默认的对象,但它在哪里得到它的参数?它在哪里定义?它来自什么?
答案 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