2012-05-10 15 views

Respuesta

4

Hemos estado probando con éxito todas nuestras API REST utilizando Specs2 y la biblioteca Despacho (https://dispatchhttp.org/Dispatch.html). El despacho toma un poco de tiempo para entender, pero una vez que comprenda cómo se compone todo junto con varios operadores, puede probar un servicio REST simple con un par de líneas de código.

Aquí hay un par de casos de prueba de fuera reciente proyecto:

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

La primera prueba hace una solicitud posterior, la segunda una petición GET. También tenemos algunas pruebas más complejas que analizan la cadena JSON de respuesta a través del analizador de levantamiento-json para que podamos afirmar contra el documento más fácilmente. Las pruebas anteriores solo están verificando algunos casos simples de error/estado.

También hay un proyecto de reinicio y despacho en curso que tiene una API simplificada y funciona con conexiones asíncronas. Sin embargo, aún no estoy seguro de lo estable que es.

1

En mis últimos proyectos utilicé AsyncHttpClient y Jersey Client para probar los servicios REST y puedo recomendar ambos. Para las operaciones de sincronización el primero es mejor (no sé si el cliente de jersey admite operaciones asíncronas en absoluto).

Están escritos en Java y no tienen (según mi conocimiento) Scala-API.

Cuestiones relacionadas