Middle+
Kuo skiriasi stop ir mock?
sobes.tech AI
Atsakymas iš AI
stop naudojamas derinimo tikslais nutraukti skripto vykdymą ir peržiūrėti būseną tam tikru momentu. mock — tai technika vienetiniame testavime, imituojant išorinių priklausomybių (klasės ar funkcijos) elgesį, siekiant izoliuoti testuojamą kodą.
Stop:
- Tikslas: Derinimas, tarpiniai rezultatų patikrinimai.
- Naudojimas: Kūrimo metu, laikinai sustabdyti vykdymą.
- Įrankiai: Įmontuotos funkcijos (
die(),exit()), derinimo įrankiai (xdebug).
<?php
// Pavyzdys, kaip naudoti stop derinimui
$data = ['item1', 'item2'];
echo "Duomenų apdorojimo pradžioje.\n";
// Sustabdome vykdymą duomenų turiniui patikrinti
die(var_dump($data));
echo "Po duomenų apdorojimo.\n"; // Šis kodas nebus vykdomas
Mock:
- Tikslas: Vienetinis testavimas, testuojamo kodo izoliacija.
- Naudojimas: Sukurti "pamušalus" priklausomybėms (duomenų bazės, išoriniai API, kiti klasės).
- Įrankiai: Testavimo karkasai (PHPUnit) ir bibliotekos mokų kūrimui (Mockery).
<?php
// Pavyzdys, kaip koncepcija mock (be naudojimo karkaso, iliustracijai)
// Priklausomybės imitacija
interface DataFetcher {
public function fetchData(): array;
}
// Klasė1, kuri priklauso nuo DataFetcher (testuojama)
class DataProcessor {
private DataFetcher $fetcher;
public function __construct(DataFetcher $fetcher) {
$this->fetcher = $fetcher;
}
public function processData(): array {
$data = $this->fetcher->fetchData();
// Apdorojimo logika
foreach ($data as &$item) {
$item = strtoupper($item);
}
return $data;
}
}
// Mock objektas DataFetcher testui
class MockDataFetcher implements DataFetcher {
public function fetchData(): array {
// Grąžina iš anksto apibrėžtus duomenis vietoje realaus užklausos
return ['mock_item_1', 'mock_item_2'];
}
}
// Teste:
$mockFetcher = new MockDataFetcher();
$processor = new DataProcessor($mockFetcher);
$processed = $processor->processData();
// Patikriname, ar $processed turi ['MOCK_ITEM_1', 'MOCK_ITEM_2']
Naudojant mokus, galima testuoti klasės A logiką, neatsižvelgiant į klases B teisingą veikimą ar prieinamumą, nuo kurios A priklauso. Vietoje realios klasės B naudojamas mokas, kuris grąžina prognozuojamus duomenis arba tikrina, ar buvo iškviesti tam tikri metodai.