Konuyu Açan
#1
WireMock, HTTP tabanlı servislere yönelik sahte ortamlar (mock server) oluşturarak, gerçek API'lere ulaşmadan test yapmamızı sağlayan güçlü bir araçtır. Mobil uygulamalarda API entegrasyon testleri gerçekleştirirken, gerçek API'lerin kullanılmasının getirdiği karmaşık durumlar ve erişim sorunları nedeniyle WireMock tercih edilir. Bu yazıda, WireMock kullanarak mobil API testlerinin nasıl yapılandırılacağına ve uygulanacağına detaylıca değineceğim.
İlk adım olarak, WireMock'un temel mantığını anlamak gerekir. Mobil uygulamada API çağrıları genellikle JSON formatında veri döner. Test sırasında, API'nin farklı yanıtlarını simüle etmek, uygulamanın bu farklı durumlara nasıl tepki verdiğini görmek kritik önemdedir. Bu noktada, WireMock'un HTTP isteklerine göre önceden tanımlanmış yanıtlar döndürmesi devreye girer.
İkinci aşamada, WireMock'un lokal veya uzak bir sunucuda çalıştırılması gerekir. Bu, genellikle Java tabanlıdır ve aşağıdaki komutla başlatılır:
KOD
1java -jar wiremock-jre8-standalone-.jarÜçüncü adımda, API uç noktalarını ve yanıtlarını tanımlayan stub'lar oluşturulur. Örneğin, mobil uygulamanın kullanıcı bilgisi sorgusu yapması durumunda, test ortamında bu isteğe karşılık gelen JSON yanıtını önceden hazırlayıp, aşağıdaki gibi tanımlayabiliriz:
KOD
1234567891011{
"request": {
"method": "GET",
"url": "/api/users/123"
},
"response": {
"status": 200,
"body": "{ \"id\": 123, \"name\": \"Ali Veli\", \"status\": \"active\" }",
"headers": { "Content-Type": "application/json" }
}
}Bu stub'u WireMock'un admin API'si veya dosya tabanlı konfigürasyon ile ekleyerek, mobil uygulama bu URL'ye eriştiğinde belirli yanıtlar alır. Test sürecinde, farklı senaryoları (hatalar, zaman aşımı, geçersiz yanıtlar) simüle etmek için çeşitli stub'lar hazırlamak gerekir.
Son olarak, mobil uygulama test ortamını, API çağrılarını WireMock'un çalıştığı sunucuya yönlendirecek şekilde yapılandırmak önemlidir. Bu, genellikle API URL'sini test ortamı URL'si ile değiştirerek veya proxy ayarlarıyla yapılır. Ayrıca, WireMock'un API'sini kullanarak dinamik stub'lar oluşturmak veya varolanları güncellemek de testlerin otomasyonunu kolaylaştırır.
WireMock'un sağladığı esneklik ve detaylı yapılandırma imkânlarıyla, mobil uygulama testleri hem kapsamlı hem de kontrollü hale gelir. Bu sayede, gerçek API'lerde oluşabilecek sorunlar ve farklı yanıt durumları, sahte ortamda test edilerek uygulamanın dayanıklılığı artırılır.
