This media is not supported in your browser
VIEW IN TELEGRAM
Так и бывает со всеми мечтами 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Тяжелые будни девопса 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
А потом айтишники виноваты во всем 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Иногда так хочется уехать в никуда... 🚘 😆
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Даже комментариев не надо 😊
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
И попробуй такому в прибавке откажи 😏 💀
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Просто ха-ха 😆
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ой, спалился🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
HTML язык программирования? Жестко 🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Дебаггер дихлофос😂🤪
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ой...😱🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Кто себя узнал?🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
А платить будут как обычному разрабу😡🧐😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Тестеры, мы Вас уважаем и ценим😂😂😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ой, как же так?! 😎🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это мы? 🧐😱🤪😂
С Новым Годом!🎄 🎁
С Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
Ну что ребят, отдохнули? 😈
Сегодня продолжаем изучение тем по Java! А в воскресение вновь встречаемся)
Пишите в комментариях, если после праздников темы пойдут туго!😏
Сегодня продолжаем изучение тем по Java! А в воскресение вновь встречаемся)
Пишите в комментариях, если после праздников темы пойдут туго!
Please open Telegram to view this post
VIEW IN TELEGRAM
Аргумент-матчеры и частичное мокирование
Mockito не ограничивается базовыми функциями вроде создания моков или проверки вызовов. Продвинутые возможности библиотеки позволяют обрабатывать сложные сценарии, такие как использование аргумент-матчеров, частичное мокирование и контроль порядка вызовов.
1. Аргумент-матчеры
Аргумент-матчеры позволяют проверять вызовы методов, не завися от конкретных значений параметров. Это полезно, если параметры варьируются или неизвестны заранее.
Использование стандартных матчеров:
any – принимает любое значение:
eq – проверяет точное соответствие:
argThat – настраиваемые условия:
2. Частичное мокирование с помощью spy
Иногда требуется протестировать объект, сохранив его реальные методы, но с возможностью переопределения некоторых из них. Для этого используется spy.
Пример использования spy:
Важные моменты:
Используйте spy для реальных объектов, если нужна их логика.
Не смешивайте when и doReturn для одного и того же метода у spy (о doReturn поговорим в следующем посте).
Когда использовать эти подходы?
Аргумент-матчеры полезны для методов с динамическими параметрами.
spy – когда объект имеет сложную логику, которую нельзя полностью заменить mock.
Тест с аргумент-матчерами и spy
Допустим, у нас есть сервис:
Тест с spy:
#Java #Training #Spring #Testing #Mockito #Spy
Mockito не ограничивается базовыми функциями вроде создания моков или проверки вызовов. Продвинутые возможности библиотеки позволяют обрабатывать сложные сценарии, такие как использование аргумент-матчеров, частичное мокирование и контроль порядка вызовов.
1. Аргумент-матчеры
Аргумент-матчеры позволяют проверять вызовы методов, не завися от конкретных значений параметров. Это полезно, если параметры варьируются или неизвестны заранее.
Использование стандартных матчеров:
any – принимает любое значение:
Mockito.when(mockList.get(anyInt())).thenReturn("Default");
System.out.println(mockList.get(0)); // Выведет: Default
System.out.println(mockList.get(999)); // Выведет: Default
eq – проверяет точное соответствие:
Mockito.when(mockList.get(eq(1))).thenReturn("Specific");
System.out.println(mockList.get(1)); // Выведет: Specific
System.out.println(mockList.get(2)); // Выведет: null
argThat – настраиваемые условия:
Mockito.when(mockList.get(argThat(i -> i % 2 == 0))).thenReturn("Even");
System.out.println(mockList.get(2)); // Выведет: Even
System.out.println(mockList.get(3)); // Выведет: null
2. Частичное мокирование с помощью spy
Иногда требуется протестировать объект, сохранив его реальные методы, но с возможностью переопределения некоторых из них. Для этого используется spy.
Пример использования spy:
List<String> realList = new ArrayList<>();
List<String> spyList = Mockito.spy(realList);
// Переопределяем метод
Mockito.when(spyList.size()).thenReturn(100);
// Реальные методы продолжают работать
spyList.add("Item");
System.out.println(spyList.get(0)); // Выведет: Item
System.out.println(spyList.size()); // Выведет: 100
Важные моменты:
Используйте spy для реальных объектов, если нужна их логика.
Не смешивайте when и doReturn для одного и того же метода у spy (о doReturn поговорим в следующем посте).
Когда использовать эти подходы?
Аргумент-матчеры полезны для методов с динамическими параметрами.
spy – когда объект имеет сложную логику, которую нельзя полностью заменить mock.
Тест с аргумент-матчерами и spy
Допустим, у нас есть сервис:
@Service
public class CalculatorService {
public int add(int a, int b) {
return a + b;
}
public int multiply(int a, int b) {
return a * b;
}
}
Тест с spy:
@ExtendWith(MockitoExtension.class)
public class CalculatorServiceTest {
@Spy
private CalculatorService calculatorService;
@Test
void testPartialMocking() {
// Частично переопределяем метод
Mockito.when(calculatorService.add(anyInt(), eq(0))).thenReturn(0);
// Проверка
Assertions.assertEquals(0, calculatorService.add(10, 0)); // Переопределено
Assertions.assertEquals(30, calculatorService.add(10, 20)); // Реальная логика
// Проверяем другой метод
Assertions.assertEquals(200, calculatorService.multiply(10, 20));
}
}
#Java #Training #Spring #Testing #Mockito #Spy
https://t.me/Java_for_beginner_dev/1287
Тем кому интересно - я нашел решения проблем. Во всем виноват Gradle🤪😂😂
Тем кому интересно - я нашел решения проблем. Во всем виноват Gradle🤪😂😂
Telegram
Java for Beginner
Пишем тестовое задание от реального работодателя. Заключительная часть. Встреча от 29.12.2024
Запись нашей встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы закончили писать тестовый сервис по документации реального работодателя с hh.ru:
— Исправление…
Запись нашей встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы закончили писать тестовый сервис по документации реального работодателя с hh.ru:
— Исправление…