По-перше, деякі визначення:
Тест блоку тестує одиниці ізольовано від інших блоків, але те, що це означає, конкретно не визначається жодним авторитетним джерелом, тож давайте визначимо це трохи краще: Якщо межі вводу / виводу перекреслені (чи це мережа вводу / виводу мережа, диск, екран або введення інтерфейсу користувача) є напівцільне місце, де ми можемо провести лінію. Якщо код залежить від вводу / виводу, він перетинає межу одиниці, і тому йому потрібно буде знущатися над блоком, відповідальним за цей вхід / вивід.
Під цим визначенням я не бачу переконливих причин знущатися над такими предметами, як чисті функції, це означає, що тестування одиниць піддається чистим функціям або функціям без побічних ефектів.
Якщо ви хочете об'єднати тестові одиниці з ефектами, слід знущатися з одиниць, відповідальних за ефекти, але, можливо, слід розглянути тест інтеграції. Отже, коротка відповідь: «якщо вам потрібно знущатися, запитайте себе, чи справді вам потрібен тест на інтеграцію». Але тут є краща, довша відповідь, і кроляча нора йде набагато глибше. Моделі можуть бути моїм улюбленим запахом коду, тому що у них є багато чого навчитися.
Код пахне
Для цього ми звернемося до Вікіпедії:
У комп'ютерному програмуванні запах коду - це будь-яка характеристика вихідного коду програми, яка, можливо, вказує на глибшу проблему.
Це продовжується пізніше ...
"Запахи - це певні структури в коді, які вказують на порушення основних принципів дизайну і негативно впливають на якість дизайну". Сурянараяна, Гіріш (листопад 2014 р.). Рефакторинг для програмного забезпечення запахів. Морган Кауфман. p. 258.
Кодові запахи, як правило, не помилки; вони не є технічно некоректними і не заважають програмі функціонувати. Натомість вони вказують на слабкі місця в дизайні, які можуть уповільнити розвиток або збільшити ризик виникнення помилок або збоїв у майбутньому.
Іншими словами, не всі кодові запахи погані. Натомість вони є загальними ознаками того, що щось може не виражатися в оптимальній формі, і запах може вказувати на можливість вдосконалити відповідний код.
У випадку глузування запах вказує на те, що одиниці, які, здається, закликають до макетів, залежать від одиниць, які слід знущатися. Це може бути вказівкою на те, що ми не розклали проблему на атомнорозв’язні частини, і це може вказувати на недолік дизайну в програмному забезпеченні.
Суть усієї розробки програмного забезпечення полягає в процесі розбиття великої проблеми на менші, незалежні частини (розкладання) та складання рішень разом, щоб утворити додаток, який вирішує велику проблему (композицію).
Знущання необхідні, коли блоки, які використовуються для розбиття великої проблеми на менші частини, залежать один від одного. По-іншому, глузування потрібно, коли наші передбачувані атомні одиниці складу насправді не є атомними, і наша стратегія розкладання не спромоглася розкласти більшу проблему на менші, незалежні проблеми, які слід вирішити.
Те, що викликає знущання над кодовим запахом, полягає не в тому, що в насмішці є щось, що є не так - іноді це дуже корисно. Що викликає кодовий запах, це те, що він може вказувати на проблемне джерело зв'язку у вашій програмі. Іноді видалення цього джерела зв'язку набагато продуктивніше, ніж написання макету.
Існує багато видів зчеплення, а деякі кращі за інші. Розуміння того, що знущання є кодовим запахом, може навчити вас виявляти та уникати найгірших видів на початку життєвого циклу дизайну програми, перш ніж запах перетвориться на щось гірше.