Middle+
stop жана mock ортосундагы айырма эмнеде?
sobes.tech AI
AIден жооп
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;
}
// DataFetcherге көз каранды класс1 (тесттелүүчү)
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;
}
}
// Тестте мок объект 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 классынын ордуна мок колдонулат, ал алдын ала белгиленген маалыматтарды кайтарат же белгилүү методдор чакырылганын текшерет.