Middle+
У чему се састоји разлика између stop и mock?
sobes.tech АИ
Одговор од АИ
stop се користи у сврху дебаговања за прекид извршавања скрипте и преглед стања у одређеном тренутку. mock је техника у јединичном тестирању за имитирање понашања спољашњих зависности класе или функције са циљем изолације тестираног кода.
Stop:
- Циљ: Дебаговање, провера међустепених резултата.
- Примена: Током развоја, за привремено заустављање извршавања.
- Алатке: Уграђене функције (
die(),exit()), алати за дебаговање (xdebug).
<?php
// Пример коришћења stop за дебаговање
$data = ['item1', 'item2'];
echo "Пре обраде података.\n";
// Заустављамо извршавање за проверу садржаја $data
die(var_dump($data));
echo "После обраде података.\n"; // Овај код се неће извршити
Mock:
- Циљ: Јединично тестирање, изолација тестираног кода.
- Примена: Стварање "заглушења" за зависности (базе података, спољашњи API-ји, други класе).
- Алатке: Фрејмворкови за тестирање (PHPUnit) и библиотеке за креирање мокова (Mockery).
<?php
// Пример концепта mock-а (без коришћења фрејмворка, за илустрацију)
// Имитација зависности
interface DataFetcher {
public function fetchData(): array;
}
// Класа1, која зависи од DataFetcher (тестирана)
class DataProcessor {
private DataFetcher $fetcher;
public function __construct(DataFetcher $fetcher) {
$this->fetcher = $fetcher;
}
public function processData(): array {
$data = $this->fetcher->fetchData();
// Нека логика обраде
foreach ($data as &$item) {
$item = strtoupper($item);
}
return $data;
}
}
// Mock-објекат за DataFetcher у тесту
class MockDataFetcher implements DataFetcher {
public function fetchData(): array {
// Враћа предодређене податке уместо стварног захтева
return ['mock_item_1', 'mock_item_2'];
}
}
// У тесту:
$mockFetcher = new MockDataFetcher();
$processor = new DataProcessor($mockFetcher);
$processed = $processor->processData();
// Проверавамо да ли $processed садржи ['MOCK_ITEM_1', 'MOCK_ITEM_2']
Користећи мокове, можемо тестирати логику класе A без ослањања на исправност рада или доступност класе B, од које A зависи. Уместо стварне класе B, користи се мок који враћа предвидљиве податке или проверава да ли су позвани одређени методи.