burlarse el valor de retorno de domainInstance.validate ()
-
12-10-2019 - |
Pregunta
Estoy escribiendo un href="http://spockframework.org" rel="nofollow"> Spock prueba de unidad que pone a prueba un método de control.
La acción del controlador bajo prueba instancia un nuevo objeto de instancia de dominio y llamadas validan en él antes de que se ahorra. ¿Hay alguna forma de burlarse de la llamada a domainInstance.validate () por lo que puede hacerlo volver lo que quiera? ¿O tengo que ocultar este instanciation y guardar detrás de un método de servicio para lograr esto?
Lo hago esta manera, porque en el contexto de una prueba unitaria para una controlador, las limitaciones de un objeto de dominio no debe estar involucrado. Pruebo los de otros lugares (en los MyDomainClassTests, obviamente). Si yo querido tomar en cuenta aquellos en mi prueba sería una integración prueba.
Solución 2
Después de un tiempo me han llegado a la conclusión de que lo que quería es bastante complicado. Si estás en un escenario en el que no lo hace Tienes para utilizar mockDomain()
, se podría añadir un método maravilloso metaclase y de aplicación (devolver verdadero o falso, lo que usted quiere)
Si lo necesidad mockDomain () porque es necesario para casos preexistentes simulacros usted está fuera de opciones, al menos por ahora, porque mockDomain () y jugando con métodos MetaClass que mockDomain realidad proporciona voluntad no mezcle.
Otros consejos
Si usted no ha realizado la validación de la propia instancia de dominio, sino más bien en un servicio, se puede dejar que el controlador tomar un servicio en su constructor (o más bien de una interfaz de un servicio). Deje que la manija de la validación del servicio.
Ahora para su unittest de ese controlador, que pasaría en un simulacro de esa interfaz (servicio) al controlador y configurar el simulacro de retorno lo que quiera.
Para .net puedo recomendar Moq ( http://code.google.com/p/moq / )