Middle+
stop ve mock arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
stop, hata ayıklama amaçlarıyla, betik yürütmesini durdurmak ve belirli bir aşamada durumu görüntülemek için kullanılır. mock, bir sınıf veya fonksiyonun dış bağımlılıklarının davranışını taklit etmek için birim testlerinde kullanılan bir tekniktir ve test edilen kodu izole etmeyi amaçlar.
Stop:
- Hedef: Hata ayıklama, ara sonuçların kontrolü.
- Uygulama: Geliştirme sırasında, yürütmeyi geçici olarak durdurmak için.
- Araçlar: Yerleşik fonksiyonlar (
die(),exit()), hata ayıklama araçları (xdebug).
<?php
// Hata ayıklama için stop kullanım örneği
$data = ['item1', 'item2'];
echo "Veri işleme öncesi.\n";
// $data içeriğini kontrol etmek için yürütmeyi durdur
die(var_dump($data));
echo "Veri işleme sonrası.\n"; // Bu kod çalıştırılmayacak
Mock:
- Hedef: Birim testleri, test edilen kodun izolasyonu.
- Uygulama: Bağımlılıkların (veritabanları, harici API'ler, diğer sınıflar) "taklit" edilmesi.
- Araçlar: Test frameworkleri (PHPUnit) ve mock oluşturma kütüphaneleri (Mockery).
<?php
// Mock kavramı örneği (framework kullanılmadan, gösterim amaçlı)
// Bağımlılık taklidi
interface DataFetcher {
public function fetchData(): array;
}
// DataFetcher bağımlı olan, test edilen sınıf
class DataProcessor {
private DataFetcher $fetcher;
public function __construct(DataFetcher $fetcher) {
$this->fetcher = $fetcher;
}
public function processData(): array {
$data = $this->fetcher->fetchData();
// İşleme mantığı
foreach ($data as &$item) {
$item = strtoupper($item);
}
return $data;
}
}
// Testte kullanılan mock nesnesi
class MockDataFetcher implements DataFetcher {
public function fetchData(): array {
// Gerçek isteğin yerine önceden tanımlanmış veri döner
return ['mock_item_1', 'mock_item_2'];
}
}
// Testte:
$mockFetcher = new MockDataFetcher();
$processor = new DataProcessor($mockFetcher);
$processed = $processor->processData();
// $processed'in ['MOCK_ITEM_1', 'MOCK_ITEM_2'] içerdiğini kontrol et
Mock kullanımı, A sınıfının mantığını, B sınıfının doğru çalışmasına veya erişilebilirliğine bağlı olmadan test etmeyi sağlar. Gerçek B sınıfı yerine, öngörülebilir veri döndüren veya belirli metodların çağrılıp çağrılmadığını kontrol eden bir mock kullanılır.