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
// Намунаи консепти мок (бе истифодаи фреймворк, барои тасвир)
// Имитацияи вобастагӣ
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;
}
}
// Объекти мок барои 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 воқеӣ, мок истифода мешавад, ки маълумоти пешгӯишаванда медиҳад ё санҷиш мекунад, ки оё методҳои муайян даъват шудаанд.