Sobes.tech
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.