jueves, 16 de mayo de 2013

Mock



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