Реалізація моків та заглушок в модульних тестах PHP.
Ласкаво просимо, початківці програмісти, у фантастичний світ веб-розробки! Сьогодні ми поглиблюємося головою в кроличу нору PHP Unit Testing, зосереджуючись переважно на мистецтві використання Моків і Заглушок. Отже, пристібніть ваші шоломи, оскільки зараз буде гіківсько!
Перш ніж ми поринемо у глибину, давайте переконаємося, що всі ми співаємо з одного листка пісні. Юніт-тестування, у найпростішому розумінні, – це спосіб перевірити, чи працюють окремі компоненти вашого коду, як задумано. Представте собі це як репетицію фільму перед великим зйомочним днем. Моки і Заглушки – це наші зіркові замінники, які допомагають нам імітувати певні умови та реакції для більш гладкої репетиції.
Що таке Моки і Заглушки?
Давайте розкриємо ці терміни, перш ніж рухатися далі. У всесвіті тестування у PHP, ‘Мок’ – це імітація реального об’єкта з можливістю вирішувати, які методи можуть бути викликані. Якщо ваш код був ляльковим шоу, то Моки були б ляльковими майстрами.
‘Заглушки’, з іншого боку, не такі контрольні. Вони більше схожі на дублерів, з попередньо програмованими відповідями, які заступають реальну справу, коли це потрібно.
Краса Моків і Заглушок
Моки і Заглушки – це супергерої, готові прибрати Готем або, отже, ваш код. Вони ізолюють ваше середовище тестування, допомагаючи уникнути будь-яких наслідків у реальному світі. Якщо щось йде не так, реальні методи та бази даних залишаються недоторканими, і ви, шановний програмісте, можете виправити збитки за кулісами. Це схоже на наявність мережі безпеки в коді, що дозволяє вам виконувати сміливі акробатичні трюки, не турбуючись про високорівневі наслідки.
Впровадження Моків і Заглушок
Пригоди починаються з PHPUnit
PHP Unit Testing використовує PHPUnit, фреймворк, який робить тестування більш ефективним. Достатньо балаканини, давайте розглянемо деякі приклади псевдо-коду.
Мокінг
Створення Мока настільки просте, як це:
$mockObject = $this->createMock(ClassToMock::class);
Ми щойно створили мок-об’єкт класу ClassToMock. Ми можемо подальше визначити, які функції ми хочемо, щоб наш Мок скопіював.
Заглушування нашого Шляху
Створення Заглушки не дуже відрізняється:
$stub = $this->createStub(ClassToMock::class);
//Заглушує метод someMethod
$stub->method('someMethod')
->willReturn('Привіт, я заглушка!');
Вищезазначена заглушка завжди повертатиме ‘Привіт, я заглушка!’, коли викликається метод someMethod. Говорять, що це перевиконанець!
Обробка Виключень
Гра з мокуванням та заглушуванням може бути складною, коли в ситуацію втручаються виключення. На щастя, PHPUnit надає можливість обробляти їх таким чином:
$stub->method('exceptionThrowingMethod')
->will($this->throwException(new Exception));
Це встановлює нашу Заглушку так, що виклик методу exceptionThrowingMethod тепер призводить до винятку. Це схоже на провокацію віртуального бика в безпечному арені.
Вуаля! Ми щойно розглянули основи впровадження Моків і Заглушок у PHP Unit Testing. Не забувайте практикувати, оскільки програмування, як і розповідання гарного жарту, завжди стає кращим з повторенням!
Подолання Моків і Заглушок – це знак відзнаки у вашому програмістському шляху, тож погладьте себе по плечу і радійте своїм новим знанням. Пам’ятайте, у світі програмування немає ‘Місії Неможливої’. З достатньою наполегливістю та веселощами, ви в дорозі до створення найстійкішого, найнадійнішого і, власне кажучи, найвеселішого коду. Щасливого програмування!