Mountebank ile requestleri kaydetme/görüntüleme

Nursah Bayat
ÇSTech
Published in
2 min readDec 28, 2021

Mountebank, Çiçeksepeti’nde mikroservis testlerimizde kullandığımız, servisleri mocklayarak, gerekli olan response’ları dönmemizi sağlayan açık kaynak bir araçtır.

Mountebank, bir requestin belirli kriterlerine dayalı olarak, istediğimiz şekilde response almamızı ve sağladığı arayüzüyle atılan requestleri inceleyebilmemizi sağlamaktadır.

Entegrasyon testlerimizde test ettiğimiz servis, başka servisler ile haberleşiyorsa, bu dış servislerin test ortamlarına gitmek yerine mountebank ile mocklamaktayız. Böylelikle test ortamlarındaki değişiklikler /hatalar veya dataların değişmesi sonucu testlerimizin etkilenmesini önlemekteyiz.

Kullanacağımız tüm servisler için belirlediğimiz portlarda ayrı ayrı mock datalarımızı oluşturduktan ve projemizi ayağa kaldırdıktan sonra, http://localhost:2525/imposters adresinde, gidilen her bir dış servis için oluşturduğumuz imposter dosyalarını ve gelen requestleri görmekteyiz.

Oluşturduğumuz imposterlara atılan istek sayılarını görmekteyiz. 5038 portunda bulunan Y servisi için oluşturulan imposter’a henüz istek atılmadığı, 5039 portunda bulunan imposter’a 1 istek atıldığı görülmektedir.

İstek atılan imposter detayına girildiğinde, /verify endpointine POST isteği atıldığını görmekteyiz. Request’in header ve body bilgileri aşağıdaki gibi görüntülenebilmektedir. Imposterlar bu formata uygun olarak oluşturduğumuzda imposter.ejs içerisinde düzenlediğimiz response dönecektir.

Test ettiğimiz servis, dış servislerde hangi endpointe istek attığı ve bu isteğin detayı her bir imposter dosyası içerisinde görülmektedir.

Requestleri görüntüleyebilmek için mountebank dosyalarında yapılması gerekenler:

  • Atılan requestleri görüntüleyebilmek için "recordRequests": true olarak her imposter dosyasına eklenmelidir.
  • Mountebank için container oluştururken arayüze erişebilmek ve requestleri görünteleyebilmek için ayrı bir port eklenmelidir.
Mountebank container’ı ayağa kaldıktan sonra bu url ile arayüze erişilebilir.

Referanslar:

--

--