Pest PHP ile Modern ve Akıcı Testler Yazma Rehberi
PHP ekosisteminin en popüler test frameworklerinden Pest PHP ile akıcı, okunabilir ve güçlü test senaryoları kurgulamayı öğrenin.
Pest PHP ile Modern ve Akıcı Testler
Pest PHP, PHPUnit üzerine inşa edilmiş, zarif ve fonksiyonel sözdizimine sahip bir test çatısıdır. Test yazma deneyimini eğlenceli ve anlaşılır hale getirir.
Neden Pest?
Geleneksel PHPUnit testlerinde karşılaştığımız sınıf kalıtımları, uzun anotasyonlar ve tekrarlayan metot tanımları yerine Pest, akıcı bir API sunar:
test('kullanıcı ana sayfayı başarıyla görüntüleyebilir', function () {
$response = $this->get('/');
$response->assertStatus(200)
->assertSee('laravel.net.tr');
});
Beklenti Zincirleri (Expectations)
Pest'in en güçlü yanlarından biri zengin expectation metodlarıdır:
test('sayısal ve dizi doğrulamaları', function () {
expect([1, 2, 3])
->toBeArray()
->toHaveCount(3)
->toContain(2);
expect(10)->toBeGreaterThan(5);
});
Dataset Kullanımı
Farklı girdi senaryolarını test etmek dataset özelliği ile çok kolaydır:
test('geçerli e-posta adresleri kabul edilir', function (string $email) {
expect(filter_var($email, FILTER_VALIDATE_EMAIL))->not->toBeFalse();
})->with([
'tunahan@example.com',
'info@laravel.net.tr',
'hello@cekirdekod.com',
]);
Mimari Testler (Architecture Testing)
Pest Architecture eklentisi sayesinde projenizin mimari kurallarını bile test edebilirsiniz:
test('modeller doğrudan request nesnesine erişmemelidir')
->expect('App\Models')
->not->toUse('Illuminate\Http\Request');
Yazar Hakkında
Tunahan Çalışkan
Kıdemli Yazılım MimarıPHP, Laravel ve modern web ekosisteminde ölçeklenebilir mimariler ve araçlar geliştirmektedir.
Diğer Makaleler
Laravel 11 ve Yeni Özellikler: Minimalist Yapı, Üstün Performans
Laravel 11 ile gelen sadeleştirilmiş uygulama yapısı, yeni middleware tanımları, dumpable trait ve performans geliştirmelerini derinlemesine inceliyoruz.
Laravel Paper ile Flat-File İçerik Yönetimi
Veritabanı bağımlılığı olmadan Markdown ve YAML frontmatter dosyalarıyla güçlü, hızlı ve taşınabilir içerik modelleri inşa edin.