2010-03-24 14 views
6

Mi proyecto actual usa JSON como formato de intercambio de datos. Tanto el equipo de Front-end como el de Back-end acuerdan una estructura JSON antes de comenzar a integrar un servicio. A veces debido a cambios no notificados en la estructura JSON por parte del equipo de back-end; rompe el código de front-end.Cómo afirmar/probar la unidad de servidores Respuesta JSON?

¿Hay alguna biblioteca externa que podamos usar para comparar un JSON simulado (accesorio) con la respuesta JSON de los servidores? Básicamente debe afirmar todo el objeto JSON y debe arrojar un error si hay alguna violación en el formato JSON de los servidores.

Información adicional: la aplicación se basa en los servicios JQuery que consumen REST JSON.

Respuesta

6

Recomendaría un esquema para sus objetos JSON.

Yo uso Kwalify pero también puedes usar Rx si prefieres esa sintaxis.

+0

No obstante, es interesante declarar el esquema para JSON.Aquí está mi idea sobre el enfoque de accesorios; podría usarse tanto para probar la integridad de los servicios de back-end como para el desarrollo de UI fuera de línea o pre-integración. – shazmoh

+2

No mezcles esas cosas. Use un esquema para asegurarse de que ambos entienden el contrato de datos. Use accesorios en el back-end para hacer pruebas unitarias. Mezclarlos te hará actualizar demasiadas cosas y te complicará la vida. –

3

Parece que está tratando de resolver un problema del otro lado. ¿Por qué debería usted, como desarrollador de front-end, molestarse en probar el trabajo del desarrollador de back-end?

Un JSON que se genera en el servidor es mejor probarlo en el servidor utilizando un enfoque estándar, es decir, pruebas funcionales en xUnit. También puede consultar frameworks de pruebas de aceptación como FITnesse si quiere tener pruebas y documentación wiki todo en uno.

Si incluso después de introducir las pruebas en el servidor obtendrá JSON no válido, es un problema en la comunicación humana, no en las pruebas.

+1

No estoy de acuerdo. A pesar de que el back-end _debería hacer un mejor trabajo al probar su propio código en unidades, hay tantas veces que sería útil ayudar a garantizar que está recibiendo el tipo de datos que espera. Al poder comprobar rápidamente el JSON entrante, puede reducir significativamente el tiempo de depuración al identificar correctamente el problema como frontend o backend. – Hortitude

5

He estado usando QUnit: http://docs.jquery.com/QUnit recientemente para una gran cantidad de mi código JS.

asyncTest http://docs.jquery.com/QUnit/asyncTest se puede utilizar con bastante eficacia para probar JSON Structure.

Ejemplo:


asyncTest("Test JSON API 1", 1, function() { 
    $.getJSON("http://test.com/json", function(data) { 
     equals(data.expected, "what you expected", "Found it"); 
    }); 
}); 
0

Dado que no hay una respuesta Voy a poner mi granito de arena en

Si el problema es que se trata de requisitos cambiantes desde el back-end a continuación, lo que. lo que debes hacer es aislarte de esos cambios. Pon una abstracción entre el front-end y back-end.

Tal vez pueda llamar a esta abstracción el intercambio de formato de datos JSON.

Así que cuando pruebas la unidad GUI (con suerte estás TDDing tu GUI web) tendrás una simulación para el JSON DIF. ASÍ, cuando llegue el momento de integrar el componente con el front-end *, los cambios de software se realizarán en la implementación de la capa de abstracción. Y, por supuesto, ya tiene pruebas para aquellos basados ​​en la estructura JSON acordada.

OBTW, creo que el equipo del lado del servidor debería tener la responsabilidad de especificar el protocolo que se utilizará contra el servidor.

* ¿Por qué esto me recuerda a la broma de mi trasero y su cara podría ser gemelos.

0

https://github.com/skyscreamer/JSONassert puede ser útil para eliminar falsos positivos, de modo que si cambia el orden de los campos devueltos por el servidor, pero la respuesta general es la misma, no desencadena un error.

Cuestiones relacionadas