El "mockeo" de objetos es una tecnica para construir un objeto "falso" que se comporta de forma fija y con poca "inteligencia" ante las llamadas a sus métodos y propiedades. En otras palabras es una implementacion "semi-harcodeada" de un contrato (inteface).
El uso habitual del mockeo se da cuando estamos trabajando con Unit Tests y en general dentro de una activdad Guiada Por Pruebas (TDD).
//Falta desarrollar
Vamos a probar primero MOQ que es free y open.
QuickStart oficial de MOQ
Algo interesante ocurre cuando con el moq.setup() configuramos la llamada "mockeada" a un método el cual como respuesta necesitá setear una propiedad de su objeto contenedor (que en este caso estamos"mokeando"): para eso nos ayudamos con moq.SetupProperty() y Callback(). Pero para que CallBack() “sepa” cuál es el parametro con que se llamó el “metodo” del Setup(), hacemos asi:
view.SetupProperty(o => o.LastMessageStatus); //se habilita la property.view.Setup(o => o.NotifyStatus(Moq.It.IsAny<object>()))
.Callback((object s) => view.Object.LastMessageStatus = s); // el callback toma el parametro
Ejemplo básico de uso de MOQ
Un muy buen artículo del creador de Moq sobre cómo mocks & stubs son complementarios en la práctica.
No hay comentarios.:
Publicar un comentario