2012-05-10 14 views

cevap

4

Tüm REST API'larımızı Specs2 ve Dispatch kitaplığını (https://dispatchhttp.org/Dispatch.html) kullanarak başarıyla test ettik. Dispatch, kafanızı almak için biraz zaman alıyor, ancak çeşitli operatörler ile birlikte her şeyi nasıl oluşturduğunu anladığınızda, basit bir REST servisini birkaç satır kodla test edebilirsiniz.

İşte dışarı son projesinden test durumları buradan bir kaç:

def issueErrorStatus = { 
    val requestBody = "msisdn=447777666666&message=Some test message" 
    val req = url("http://localhost:%d/otac/issue".format(port)) << 
          (requestBody, "application/x-www-form-urlencoded") 
    val response = Http.when(_ == 400)(req <:< (touchPointHeaders) as_str) 
    response must_== """{"error":"Message must contain an {OTAC} place holder"}""" 
    } 

    def checkOtac = { 
    val req = url("http://localhost:%d/otac/check".format(port)) <<? 
             Vector(("msisdn" -> "447777123456")) 
    val response = Http(req <:< (touchPointHeaders) as_str) 
    response must_== """{"status":"Present","reissueAllowed":true}""" 
    } 

ilk test sonrası isteği, ikinci bir get isteği yapar. Ayrıca, JSON dizgisini lift-json ayrıştırıcısı aracılığıyla çözümleyen bazı daha karmaşık testlere sahibiz, böylece belgeyi daha kolay bir şekilde kanıtlayabiliriz. Yukarıdaki testler sadece bazı basit hata/durum durumlarını kontrol ediyor.

Ayrıca, basitleştirilmiş bir API'ye sahip olan ve uyumsuz bağlantılarla çalışan bir başlatma-yeniden başlatma projesi de var. Yine de ne kadar kararlı olduğundan emin değilim.

1

Son projelerimde REST hizmetlerini sınamak için AsyncHttpClient ve Jersey Client kullandım ve her ikisini de önerebilirim. Eşzamansız işlemler için eski daha iyidir (jersey istemcisi 'un asenkron işlemleri destekleyip desteklemediğini bilmiyorum).

Bunlar Java dilinde yazılmıştır ve (bilgimle) hiçbir Scala-API'sine sahip değildir.

İlgili konular