[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-testirovanie-chem-stub-otlichaetsya-ot-mock":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":16,"progress":17,"seo":18},1288,"chem-stub-otlichaetsya-ot-mock",42,"testirovanie","Тестирование","✅","Чем stub отличается от mock?","Stub подменяет данные и проверяет состояние результата, а Mock проверяет факт и порядок взаимодействия с зависимостью. Martin Fowler: \"Stubs provide canned answers, mocks verify expectations\".\n\n| Критерий | Stub | Mock |\n|----------|------|------|\n| Цель | Подменить данные | Проверить взаимодействие |\n| Проверка | Состояние результата (assertEquals) | Факт\u002Fколичество вызовов (verify) |\n| Хрупкость | Низкая -- рефакторинг не ломает | Высокая -- зависит от реализации |\n| Когда использовать | Метод возвращает результат | Метод выполняет side effect |\n\n### Пример\n\n```java\n\u002F\u002F STUB -- проверяем результат\n@Test\nvoid stubExample() {\n    when(priceService.getPrice(\"AAPL\")).thenReturn(150.0); \u002F\u002F stub\n    double total = portfolio.calculateTotal(); \u002F\u002F используем stub\n    assertEquals(1500.0, total); \u002F\u002F проверяем СОСТОЯНИЕ\n}\n\n\u002F\u002F MOCK -- проверяем взаимодействие\n@Test\nvoid mockExample() {\n    orderService.placeOrder(order);\n    verify(emailService).sendConfirmation(order.getEmail()); \u002F\u002F проверяем ВЫЗОВ\n}\n```\n\n### Когда что выбирать\n\n- Stub (state testing) -- когда метод возвращает значение и результат можно проверить через assert. Тесты менее хрупкие при рефакторинге\n- Mock (behavior testing) -- когда метод выполняет побочный эффект (отправка email, запись в лог, вызов внешнего API) и единственный способ проверить -- убедиться, что вызов произошёл\n\n### Частые ошибки\n\n- Verify + when на одном объекте -- stub достаточно, verify избыточен\n- Mock на каждый метод -- тест тестирует реализацию, а не поведение; рефакторинг ломает тест\n\n### Как используется в 2026\n\n- Mockito BDD: `given(...).willReturn(...)` + `then(mock).should().method()` -- читаемый стиль\n- Предпочитайте stub (state testing) -- тесты менее хрупкие при рефакторинге\n\n> **На собеседовании:** это один из самых частых вопросов по тестированию. Интервьюер хочет услышать конкретную разницу: stub проверяет состояние, mock проверяет поведение. Частая ошибка -- сказать, что stub и mock это одно и то же, просто разные названия.","","junior",[15],"testing",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Чем stub отличается от mock? — Gymterview","Stub подменяет данные и проверяет состояние результата, а Mock проверяет факт и порядок взаимодействия с зависимостью. Martin Fowler: \"Stubs provide canned answ","Stub подменяет данные и проверяет состояние результата, а Mock проверяет факт и порядок взаимодействия с зависимостью. M",[15,13],"Stub подменяет данные и проверяет состояние результата, а Mock проверяет факт и порядок взаимодействия с зависимостью. Martin Fowler: \"Stubs provide canned answers, mocks verify expectations\".",true]