Laravel ile Unit Test Yazımı: Başlangıç Rehberi

Kaan Atalay
21 May 2024
Yazılım geliştirmede unit testler, kodunuzun doğru çalıştığını doğrulamanın ve gelecekteki hataları önlemenin en etkili yollarından biridir. Laravel, güçlü bir test altyapısı sunarak bu süreci kolaylaştırır.
1. Neden Unit Test Yazmalıyız?
- Kod Kalitesini Artırır: Hataları erken tespit eder.
- Bakımı Kolaylaştırır: Değişikliklerin mevcut fonksiyonelliği bozmadığını doğrular.
- Güvenilirlik Sağlar: Kodunuzun beklendiği gibi çalıştığından emin olursunuz.
2. Laravel'de Test Yapısı
Laravel, PHPUnit ile entegre çalışır. Testler tests/ dizininde bulunur ve Feature ve Unit olmak üzere iki ana kategoriye ayrılır.
3. İlk Testinizi Yazın
Yeni bir test sınıfı oluşturun:
php artisan make:test ExampleTest --unit
tests/Unit/ExampleTest.php dosyasında test metotlarınızı tanımlayın.
public function test_basic_arithmetic() {
$this->assertEquals(4, 2 + 2);
}
4. Testleri Çalıştırma
php artisan test
Bu komut tüm testleri çalıştırır ve sonuçları gösterir.
5. Mocking ve Faking
- Mockery kullanarak bağımlılıkları mocklayabilirsiniz.
- Laravel's built-in fakes ile mail, event, queue gibi sistemleri fake edebilirsiniz.
6. Veritabanı İşlemleri
- RefreshDatabase trait'i ile test veritabanını temizleyebilirsiniz.
- Factory ve Seeder kullanarak test verileri oluşturabilirsiniz.
7. Edge Case ve Exception Testleri
Beklenen istisnaları ve edge case'leri test ederek kodunuzun sağlamlığını artırın.
public function test_user_not_found_exception() {
$this->expectException(ModelNotFoundException::class);
User::findOrFail(999);
}
8. Coverage ve Raporlama
- phpunit.xml dosyasında coverage ayarlarını yapılandırın.
- phpunit --coverage-html coverage/ komutuyla coverage raporu oluşturun.
9. Sürekli Entegrasyon (CI) ile Entegrasyon
Testlerinizi CI/CD pipeline'ınıza entegre ederek her değişiklikte otomatik olarak çalıştırabilirsiniz.
10. En İyi Uygulamalar
- Test isimlerini anlamlı ve açıklayıcı yapın.
- Her test bağımsız olmalı ve kendi ortamını hazırlamalıdır.
- Mümkün olduğunca gerçekçi senaryoları test edin.
Sonuç
Laravel ile unit test yazmak, uygulamanızın kalitesini ve güvenilirliğini artırır. Başlangıçta zaman alıcı gibi görünse de, uzun vadede büyük faydalar sağlar. Atalay Tech olarak, test odaklı geliştirme prensiplerini projelerimizde uyguluyoruz. Daha fazla bilgi için bizimle iletişime geçin.