2012-05-10 24 views

risposta

4

Abbiamo testato con successo tutte le nostre API REST utilizzando Specs2 e la libreria Dispatch (https://dispatchhttp.org/Dispatch.html). Dispatch impiega un po 'di tempo per capirlo, ma una volta compreso come compone tutto insieme con vari operatori, puoi testare un semplice servizio REST con un paio di linee di codice.

Ecco un paio di casi di test da fuori recente progetto:

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}""" 
    } 

Il primo test fa una richiesta POST, il secondo una richiesta GET. Abbiamo anche alcuni test più complessi che analizzano la stringa JSON di risposta attraverso il parser lift-json in modo che possiamo affermare nuovamente il documento più facilmente. I test sopra riportati stanno solo controllando alcuni semplici casi di errore/stato.

C'è anche un progetto di riavvio della spedizione in corso che ha un'API semplificata e funziona con connessioni asincrone. Non sei sicuro di quanto sia stabile.

1

Nei miei ultimi progetti ho utilizzato AsyncHttpClient e Jersey Client per testare i servizi REST e posso consigliarli entrambi. Per le operazioni asincrone il primo è migliore (non so se il client jersey supporti le operazioni asincrone).

Sono scritti in Java e non dispongono (a mia conoscenza) di Scala-API.

Problemi correlati