unitarias unit tutorial test pruebas example español descargar unit-testing api cakephp

unit testing - unit - Cómo probar la unidad de su API?



test web api c# (3)

Debería crear Mocks o usar el Marco de Aislamiento para simular el entorno API. Las pruebas unitarias no deben depender de recursos como conexiones de internet, red, puntos finales, etc.

Si tiene la intención de probar llamadas API reales, debe crear un proyecto de prueba de integración y usarlo para este propósito. Pero tenga en cuenta que las pruebas de integración en su mayoría no son repetibles y le brindarán resultados diferentes en cada ejecución.

Estoy en el punto en que necesito escribir pruebas unitarias para una API REST escrita con CakePHP 1.3. La API admite solicitudes GET, POST y PUT para consultar y manipular datos.

¿Hay alguna forma establecida de probar la entrada / salida correcta de una API que simula una solicitud HTTP, utilizando dispositivos ? No quiero ejecutar solicitudes POST / PUT reales contra la base de datos en vivo (dev). ¿Cómo puedo burlarme mejor del sistema para usar modelos temporales, y probar el resto de la pila tal como está?

Probar las solicitudes GET es bastante fácil con las pruebas del controlador . Sin embargo, para la manipulación de datos, la API usa encabezados HTTP bastante extensamente y también analiza datos XML sin procesar y JSON POST / PUT. Los métodos de prueba de la unidad controladora solo se burlan de los datos POST estableciendo $this->data en el controlador, lo que no me permite probar la API correctamente.


Parece que es posible que pueda probar los datos XML PUT y POST sin demasiados problemas. La documentación de RESTA de CakePHP dice esto:

Si una solicitud POST o PUT tiene un tipo de contenido XML, la entrada se toma y pasa a una instancia del objeto Xml de Cake, que se asigna a la propiedad $ data del controlador. Debido a esta característica, el manejo de datos XML y POST en paralelo es perfecto: no se requieren cambios en el controlador o el código del modelo. Todo lo que necesita debe terminar en $ this-> data.

Intente recorrer el código de su controlador en modo de depuración para ver qué entra realmente a través de $this->data durante una solicitud XML.

En cuanto a evitar la base de datos en vivo, ¿sería más fácil una base de datos en memoria SQLite?