Integration Testi
Entegrasyon Testi
Unit teste nazaran entegrasyon testi yönlendirme, kontrolörler, servisler ve veri tabanlarının tamamını test etmeyi amaçlar. Bir sınıfı izole etmek yerine tüm komponentler düzgün bir şekilde senkronize çalışıyor mu bunun kontrol edilmesini sağlar.
Entegrasyon testleri daha yavaş ve unit testlere göre daha agrasif yani herşeyi test etme amacındadır. Bir projenin bir çok unite testi olsa da entegrasyon desti oldukça azdır.
Yönlendirme de dahil herşeyin test edilmesi gerektiğini savunduğundan, genelde web tarayıcı gibi HTTP çağrısı yapabilecek yapılar içerir.
Entegresyon testini yapabilmek için sunucunuzun çalışır durumda olması gerekir. ASP.NET Core test etme amacıyla bu sunucunun TestServer
sınıfıyla çalıştırılıp test bittikten sonra otomatik olarak kapatılmasını sağlayabilir.
Yeni bir test projesi oluşturun
Entegrasyon testi ile unite testini birlikte aynı projede çalıştırabilirsiniz. Fakat daha güzenli olması açısından farklı projeler oluşturmak daha mantıklı.
Eğer proje dizininde iseniz bir üst klasöre cd
ile çıkın ve şimdi AspNetCoreTodo
klasöründe olmanız gerekmekte. Aşağıdaki komutlar ile yeni bir proje oluşturun.
Klasör yapınız aşağıdaki gibi olmalı:
Unit testte yaptığımız gibi ana projeye referans vermemiz gerekmekte.
Ayrıca Microsoft.AspNetCore.TestHost
NuGet paketini de aşağıdaki gibi ekleyin:
En son olarak UnitTest1.cs
dosyasını silebilirsiniz. Artık entegrasyon testi yazmaya hazırsınız.
Write an integration test
Her testten önce sunucu üzerinde bazı ayarlamaların yapılması gerekmekte. Bunu test kurulum sınıfı yerine farklı bir sınıfta gerçekleştirerek kurulum sınıfını daha temiz bırakabiliriz. TestFixture
adında yeni bir sınıf oluşturun
AspNetCoreTodo.IntegrationTests/TestFixture.cs
Bu sınıf TestServer
'ın kurulmasını ve test yapılacak sınıfın bu şekilde sunucu kurulum kodlarından ayrı olmasını sağlar.
Güvenlik ve Kimlik bölümünde Facebook ile girişi ayarladıysanız, Facebook app ID ve secret için yukarıdaki kodda
ConfigureAppConfiguration
bölümünde sahte veriler girmelisiniz. Aksi halde Gizlilik Yönetici'de bu değerler olmadığından sunucunuz başlamayacaktır.
Artık entegrasyon testi yazmaya hazırsınız. TodoRouteShould
adında yeni bir sınıf oluşturun
AspNetCoreTodo.IntegrationTests/TodoRouteShould.cs
Bu test kullanıcı girişi yapmamış birisinin /todo
yoluna talep gönderdiğinde geri gelen cevabı kontrol eder. Bu durumda giriş ekranına yönlendirmesi gerekmekte.
Bu senaryo entegrasyon testi için iyi bir örnektir. Yönlendirmeleri göz önüne alır, kontrölörlerde bulunan [Authorize]
sınıflarını kontrol eder. Böylece birisi [Authorize]
özelliğini kontrolörden silerse hata döner.
Testi terminalde, bir önceki bölümde olduğu gibi, dotnet test
komutu ile çalıştırın
Özet
Test çok geniş bir alan ve öğrenilecek çok şey var. Örneğin bu bölümde Ön-yüz tesine hiç girmedik, bu konuyu tek başına kitap olacak kadar geniştir. Fakat testin nasıl yapılması gerektiğine dair bir fikriniz var. Bunun için kendinizi geliştirebilir ve daha fazla örnek yapabilirsiniz.
Her zamanki gibi, ASP.NET Core dökümanı en iyi yardımcınız olacaktır. Bunun yanında StackOverflow bir sorun ile karşılaştığınızda başvurabileceğiniz iyi bir kaynaktır.
Last updated