Middle+
stop və mock arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
stop səhvlərin diaqnostikası üçün istifadə olunur və skriptin icrasını dayandırmaq və müəyyən mərhələdə vəziyyəti yoxlamaq üçün istifadə olunur. mock isə bir sinif və ya funksiyanın xarici asılılıqlarının davranışını simulyasiya etmək üçün istifadə olunan texnikadır və test olunan kodu izolyasiya etmək məqsədilə istifadə olunur.
Stop:
- Məqsəd: Diaqnostika, ara nəticələrin yoxlanması.
- Tətbiq: İnkişaf zamanı, müvəqqəti olaraq icranı dayandırmaq üçün.
- Alətlər: Daxili funksiyalar (
die(),exit()), diaqnostika alətləri (xdebug).
<?php
// Diaqnostika üçün stop istifadə nümunəsi
$data = ['item1', 'item2'];
echo "Məlumatların emalından əvvəl.\n";
// $data-nın məzmununu yoxlamaq üçün icranı dayandırırıq
die(var_dump($data));
echo "Məlumatların emalından sonra.\n"; // Bu kod icra olunmayacaq
Mock:
- Məqsəd: Birlik testləri, test olunan kodun izolyasiyası.
- Tətbiq: Bağımlılıqlar üçün "tıxaclar" (məlumat bazaları, xarici API-lər, digər sinflər) yaratmaq.
- Alətlər: Test çərçivələri (PHPUnit) və mock yaratmaq üçün kitabxanalar (Mockery).
<?php
// Mock konsepti nümunəsi (framework istifadə etmədən, izah üçün)
// Asılılığın simulyasiyası
interface DataFetcher {
public function fetchData(): array;
}
// DataFetcher-ə bağlı olan, test olunan sinif
class DataProcessor {
private DataFetcher $fetcher;
public function __construct(DataFetcher $fetcher) {
$this->fetcher = $fetcher;
}
public function processData(): array {
$data = $this->fetcher->fetchData();
// Emalıq məntiqi
foreach ($data as &$item) {
$item = strtoupper($item);
}
return $data;
}
}
// Testdə istifadə olunan mock obyekt
class MockDataFetcher implements DataFetcher {
public function fetchData(): array {
// Reallıqda edilən sorğu yerinə əvvəlcədən təyin olunmuş məlumatlar qaytarır
return ['mock_item_1', 'mock_item_2'];
}
}
// Testdə:
$mockFetcher = new MockDataFetcher();
$processor = new DataProcessor($mockFetcher);
$processed = $processor->processData();
// $processed-in ['MOCK_ITEM_1', 'MOCK_ITEM_2'] olduğunu yoxlayın
Mock-lardan istifadə, A sinfinin məntiqini, B sinfinin düzgün işləməsinə və ya mövcudluğuna bağlı olmadan test etməyə imkan verir. B sinfinin real versiyası yerinə, əvvəlcədən təyin olunmuş məlumatlar qaytaran və ya müəyyən metodların çağırılıb çağırılmadığını yoxlayan mock istifadə olunur.