Вопрос проверяет знание инструментов и подходов для создания мок-объектов при написании тестов, что важно для изоляции тестируемого кода.
Моки — это объекты, имитирующие поведение реальных зависимостей (баз данных, API, сервисов) во время тестирования. Они позволяют изолировать тестируемый модуль, контролировать входные данные и проверять взаимодействия. Без моков тесты становятся медленными, хрупкими и зависят от внешних систем.
// Функция, которую тестируем
const fetchData = async (api) => {
const response = await api.get('/data');
return response.data;
};
// Тест с моком
const mockApi = {
get: jest.fn().mockResolvedValue({ data: 'mocked' })
};
test('fetchData returns mocked data', async () => {
const result = await fetchData(mockApi);
expect(result).toBe('mocked');
expect(mockApi.get).toHaveBeenCalledWith('/data');
});Выбор способа зависит от языка и проекта. Для Java чаще используют Mockito, для JavaScript — Jest или Sinon, для Python — unittest.mock. Важно не переусердствовать: моки нужны для изоляции, но слишком много моков делает тесты менее реалистичными. Лучше мокать только внешние зависимости, а внутренние компоненты тестировать интеграционно.
Вывод: моки — незаменимый инструмент для юнит-тестирования, позволяющий быстро и надёжно проверять логику без внешних систем. Используйте библиотеки мокинга для автоматизации и ручное создание только для простых случаев.