Índice

Introducción a los mocks

Es posible que los servicios o controladores dependan de otros servicios. Un controlador que explote el servicio $http requiere que un recurso externo, en este caso un servidor, esté disponible durante la fase de ejecución de las pruebas.

Es necesario reemplazar el comportamiento por defecto de este servicio por un comportamiento totalmente controlado y prestablecido. El hecho de usar esta técnica se denomina mocking. El término mock se utilizará a lo largo de este capítulo para describir la acción de reemplazar el comportamiento de un objeto por otro.

1. Mock $http

En el caso del servicio $http, es necesario reemplazar las llamadas al servidor por respuestas prestablecidas. Es posible, entonces, forzar al servicio a generar respuestas o errores específicos para poder cubrir el conjunto de casos. Las pruebas unitarias necesitan una ejecución rápida (para que se resuelvan rápidamente durante la fase de desarrollo), y el hecho de prestablecer las respuestas sin tener que contactar con un servidor mejora, también, el tiempo de ejecución de las pruebas que explotan este servicio.

Para facilitar la tarea de mocking del servicio $http, AngularJS proporciona un mock del servicio $httpBackend dentro del módulo ngMocks.

images/11ep01.png

Este esquema muestra el principio de funcionamiento del servicio $http. En un uso normal, el servicio se basa en el servicio $httpBackend del módulo principal de AngularJS. Pero cuando se carga el módulo ngMocks en el contexto ...