Sobes.tech
Middle+

Stop va mock o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

stop skriptni bajarish uchun ishlatiladi va ma'lum bir bosqichda holatni ko'rish uchun ishlatiladi. mock - bu sinovlarda tashqi bog'liqliklarning xulq-atvorini taqlid qilish uchun texnika bo'lib, test qilinayotgan kodni izolyatsiya qilish uchun ishlatiladi.

Stop:

  • Ma'no: Debug qilish, o'rtacha natijalarni tekshirish.
  • Qo'llanilishi: Dasturlash jarayonida, vaqtincha to'xtatish uchun.
  • Asboblar: Ichki funksiyalar (die(), exit()), debug asboblari (xdebug).
<?php
// Debug uchun stop ni ishlatish misoli
$data = ['item1', 'item2'];
echo "Ma'lumotlarni ishlashdan oldin.\n";
// $data ning mazmunini tekshirish uchun to'xtatamiz
die(var_dump($data));
echo "Ma'lumotlarni ishlashdan keyin.\n"; // Bu kod bajarilmaydi

Mock:

  • Ma'no: Birlik testlari, test qilinayotgan kodni izolyatsiya qilish.
  • Qo'llanilishi: Bog'liqliklar uchun "tutqichlar" (ma'lumotlar bazalari, tashqi API lar, boshqa sinflar) yaratish.
  • Asboblar: Test frameworklari (PHPUnit) va mocklar yaratish kutubxonalari (Mockery).
<?php
// Mock konsepti misoli (frameworksiz, ko'rsatish uchun)
// Bog'liqlikni taqlid qilish
interface DataFetcher {
    public function fetchData(): array;
}

// DataFetcher ga bog'liq bo'lgan, test qilinadigan sinf
class DataProcessor {
    private DataFetcher $fetcher;

    public function __construct(DataFetcher $fetcher) {
        $this->fetcher = $fetcher;
    }

    public function processData(): array {
        $data = $this->fetcher->fetchData();
        // Ishlash logikasi
        foreach ($data as &$item) {
            $item = strtoupper($item);
        }
        return $data;
    }
}

// Test uchun mock ob'ekt
class MockDataFetcher implements DataFetcher {
    public function fetchData(): array {
        // Haqiqiy so'rov o'rniga oldindan belgilangan ma'lumotlarni qaytaradi
        return ['mock_item_1', 'mock_item_2'];
    }
}

// Testda:
$mockFetcher = new MockDataFetcher();
$processor = new DataProcessor($mockFetcher);
$processed = $processor->processData();
// $processed ning ['MOCK_ITEM_1', 'MOCK_ITEM_2'] bo'lishini tekshirish

Mocklardan foydalanish, A sinfining mantiqini, B sinfining to'g'ri ishlashiga yoki mavjudligiga bog'liq bo'lmagan holda test qilish imkonini beradi. B sinfining haqiqiy o'rniga, oldindan belgilangan ma'lumotlarni qaytaradigan yoki muayyan metodlar chaqirilganligini tekshiradigan mock ishlatiladi.