Axios İpuçları #5: Axios Mock Adapter ile HTTP İsteklerini Mocklamak

Tuğsan Ünlü
2 min readMay 30, 2022

--

Axios serisindeki bir önceki yazı: Axios İpuçları #4: localForage ile HTTP Yanıtlarını IndexedDB’de Önbelleklemek

Axios Mock Adapter, Axios ile yapılan HTTP isteklerini mocklamak için kullanılan, oldukça popüler bir kütüphane. Peki neden böyle bir kütüphaneye ihtiyaç duyuyoruz?

Motivasyon

Ekseriyetle, birim testler yazarken bir API’a yapılan isteğin döndüğü yanıtla değil, yanıtın ve varsa hata durumlarının doğru şekilde ele alınıp alınmadığıyla ilgileniyoruz. Hâl böyle olunca, gerçek zamanlı olarak bir API’a istek yapmak ve yanıtını beklemek, belki günde defalarca çalıştırılacak bir birim test için gereksiz zaman ve kaynak kullanımına neden oluyor.

Bunun önüne geçmek için yapmak istediğimiz isteğin yanıtına bir stub yerleştirebiliyoruz. Stub’ı, bizi API’ın gerçek ortamından izole eden, fakat uygulamamızın, API’dan yanıt almışçasına beklenen davranışını göstermeye devam etmesini sağlayan ön tanımlı veriler olarak düşünebiliriz.

Bir örnek yapalım. Hâlihazırda Axios kullandığımız projeye Axios Mock Adapter’ı bir geliştirme ortamı bağımlılığı olarak dâhil edelim.

Sözde API’ımıza basit bir istek yaparak sipariş verilerini alalım.

Akabinde Axios Mock Adapter’ı olaya müdahil edelim ve az önce sipariş verilerini almak için kullandığımız API ucuna farklı sipariş bilgileriyle bir stub ekleyelim.

Çıktıdan görüleceği üzere varsayılan Axios instance’ına yapılan GET isteklerinin, oluşturduğumuz stub ile 200 OK dönmesini sağlamış olduk. Uygulamamızın koduna herhangi bir müdahalede bulunmadık. Dahası API’ımıza hiçbir istek ulaşmadı ve HTTP isteğinin yanıt vermesi milisaniyeler sürdü.

Axios Mock Adapter’ın yetenekleri yalnızca bununa sınırlı değil elbette. Kısaca özetlemek gerekirse;

  • reply özelliğiyle POST, PUT gibi diğer HTTP metotlarını ve 404, 500 gibi diğer HTTP durumlarını da mocklayabilme,
  • replyOnce özelliğiyle tek seferlik mocklar oluşturabilme,
  • onAny özelliğiyle bir API ucunu her HTTP metotu için mocklayabilme,
  • Network hatası ve timeout senaryolarını simüle edebilme,
  • Zincirleme mock özelliğiyle arka arkaya mocklar tanımlayabilme,
  • delayResponse özelliğiyle isteklere bekleme süreleri tanımlayabilme,
  • passThrough özelliğiyle gerçek API’a erişebilme.

Sonuç

Diğer tüm kullanışlı özelliklerinin yanı sıra, yalnızca en basit reply özelliği dahi gündelik hayattaki birçok senaryoyu simüle etmeye yetiyor Axios Mock Adater’ın. Meraklısı için Moxios adında bir alternatifi de mevcut.

Kaynaklar

Axios serisindeki bir sonraki yazı: Axios İpuçları #6: HTTP İsteklerinde Upload/Download Bilgilerini Yakalamak

--

--