Cosmos DB Emulator ile yerelden CI'a veritabanı testleri
Microsoft Cosmos DB blogunda, veritabanına bağlı bir özelliğin Docker içinde çalışan Azure Cosmos DB Emulator ile yerelde nasıl test edileceği ve aynı testlerin GitHub Actions'ta nasıl çalıştırılacağı anlatılıyor. Yazının örneği Python tabanlı bir demo uygulama. Her pull request güncellemesinin temiz bir emulator üzerinde geçmesi gereken bir CI akışı kuruluyor. Veri tabanına yazıldığını ve uygulamanın cevabının değiştiğini doğrulamak isteyen geliştiriciler için pratik bir rehber.
Kilit noktalar
- Emulator'ü Docker'da vNext imajıyla çalıştırın ve 127.0.0.1 üzerindeki portlara bağlayın; hazır olma kontrolü için /ready uç noktası kullanılıyor.
- Testlerde yalnızca HTTP 200 kontrolü yetmez; yazının veritabanına ulaştığını ve sonraki yanıtın değiştiğini ayrıca doğrulayın.
- scripts.ci komutu her çalışmada izole bir emulator konteyneri açar ve testlere rastgele seçilen endpoint'i geçirir.
- Her test kendi seed'lenmiş veritabanını alır; hata olsa bile konteyner temizlenir.
- GitHub Actions iş akışı pull_request olaylarının opened, synchronize ve reopened türlerinde çalışır ve eski çalıştırmaları iptal eder.
- Emulator kimlik doğrulaması uygulamadığı için portları yalnızca yerel makinede tutun ve üretim verisiyle kullanmayın.
Bu yazı, veritabanına dayanan bir özelliğin doğru çalıştığını HTTP 200 yanıtına bakmadan nasıl kanıtlayacağınızı gösteriyor. Yazar, Docker içinde çalışan Azure Cosmos DB Emulator'ü kullanarak yazmanın depoya ulaştığını, uygulamanın güncel kaydı okuduğunu ve sonraki yanıtın bu değişikliği yansıttığını test etmenin yolunu anlatıyor. Örnek uygulama FleetCharge adlı, Microsoft Agent Framework ve FastAPI ile yazılmış bir Python demosu; model çıkarımı için Ollama üzerinde Phi-3.5 çalıştırılıyor.
Kurulumda vNext emulator imajı yerel porta bağlanıyor ve örnek veriler yüklendikten sonra uygulama başlatılıyor. Bir yardımcı betik, her CI çalışması için boş portlarla izole bir emulator konteyneri açıyor, hazır olma uç noktasını bekliyor ve lint, tip denetimi ve bileşen testlerini çalıştırıyor. Ayrı bir iş ise yerel model testlerini yapıyor. Emulator kimlik doğrulaması zorunlu kılmadığı için bu kurulum üretim için değil, yalnızca test amaçlı düşünülmeli.
Gerçek dünyada kullanımı
- Cosmos DB'ye yazan bir ASP.NET Core veya minimal API servisinde, güncelleme sonrası okunan verinin değiştiğini doğrulayan entegrasyon testleri yazmak.
- Pull request açıldığında her güncellemede temiz bir Cosmos DB ortamıyla çalışan CI kapısı kurmak.
- Gerçek bulut hesabına bağlanmadan, Docker'daki emulator ile yerel geliştirme ve test döngüsü oluşturmak.
Neden önemli
Cosmos DB'ye dokunan bir özellikte başarılı bir HTTP yanıtı tek başına yeterli değil; yazının kalıcı olduğunu ve sonraki okumada göründüğünü test etmek gerekir. Bu yaklaşım, aynı emulator kurulumunu yerelde ve CI'da kullanarak production'a yakın bir güvence sağlar.
Benzer haberler
- .NET 8 ve 9 Destek Bitişi: Deployment Odaklı Geçiş Kontrol ListesiDEV Community: #dotnet2 gün önce
- Metalama 2027.0 ile metot çağrılarını build sırasında yönlendirmeMetalama / PostSharp Blog4 gün önce
- Bobcat ile çalıştırılabilir spesifikasyonlar nasıl yazılırJeremy D. Miller (The Shade Tree Developer)5 gün önce