[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-test-kakovy-osnovy-raboty-s-mockito":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},695,"kakovy-osnovy-raboty-s-mockito",16,"spring-test","Spring Test","🧪","Каковы основы работы с Mockito?","Mockito — библиотека для создания мок-объектов в Java-тестах. Она позволяет подменять зависимости и задавать их поведение.\n\n### Создание мока\n\n```java\n\u002F\u002F Программно\nUserRepository userRepository = Mockito.mock(UserRepository.class);\n\n\u002F\u002F С помощью аннотации (требуется @ExtendWith(MockitoExtension.class))\n@Mock\nprivate UserRepository userRepository;\n```\n\n### when\u002FthenReturn — задание возвращаемого значения\n\n```java\n@Test\nvoid shouldReturnUser() {\n    User user = new User(1L, \"Иван\");\n    when(userRepository.findById(1L)).thenReturn(Optional.of(user));\n\n    Optional\u003CUser> result = userRepository.findById(1L);\n\n    assertTrue(result.isPresent());\n    assertEquals(\"Иван\", result.get().getName());\n}\n```\n\n### when\u002FthenThrow — задание выбрасываемого исключения\n\n```java\nwhen(userRepository.findById(999L))\n    .thenThrow(new EntityNotFoundException(\"Пользователь не найден\"));\n```\n\n### verify — проверка вызова метода\n\n```java\n@Test\nvoid shouldSaveUser() {\n    User user = new User(\"Иван\");\n    userService.create(user);\n\n    verify(userRepository, times(1)).save(user);\n    verify(userRepository, never()).delete(any());\n    verify(userRepository, atLeastOnce()).findAll();\n}\n```\n\n### ArgumentCaptor — захват аргументов\n\n```java\n@Test\nvoid shouldCaptureArgument() {\n    userService.create(new UserDto(\"Иван\", \"ivan@example.com\"));\n\n    ArgumentCaptor\u003CUser> captor = ArgumentCaptor.forClass(User.class);\n    verify(userRepository).save(captor.capture());\n\n    User savedUser = captor.getValue();\n    assertEquals(\"Иван\", savedUser.getName());\n    assertEquals(\"ivan@example.com\", savedUser.getEmail());\n}\n```\n\n### ArgumentMatchers — гибкое сопоставление аргументов\n\n```java\nwhen(userRepository.findByName(anyString())).thenReturn(List.of(user));\nwhen(userRepository.findById(eq(1L))).thenReturn(Optional.of(user));\nwhen(userRepository.findByAgeGreaterThan(argThat(age -> age > 0)))\n    .thenReturn(List.of(user));\n```\n\n> **На собеседовании:** минимальный набор, который нужно знать — `when\u002FthenReturn`, `verify`, `@Mock`, `@InjectMocks`. Частая ошибка — путать `any()` и `eq()`: если хотя бы один аргумент использует матчер, все остальные тоже должны использовать матчеры.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Каковы основы работы с Mockito? — Gymterview","Mockito — библиотека для создания мок-объектов в Java-тестах. Она позволяет подменять зависимости и задавать их поведение.","Mockito — библиотека для создания мок-объектов в Java-тестах. Она позволяет подменять зависимости и задавать их поведени",[7,13],true]