luis ruiz pavón
TRANSCRIPT
TESTEANDO LO INTESTEABLE CON EL
FRAMEWORK DE MOLES
Luis Ruiz Pavón
http://luisruizpavon.com
http://twitter.com/luisruizpavon
AGENDA Qué es el framework de Moles Diferencia entre Stubs y Mocks Diferencia entre Moles y Stubs Demo Stubs (Moles) y Mocks (Moq) Demo testing ASP.NET Demo testing librería de terceros Demo testing SharePoint
QUÉ ES EL FRAMEWORK DE MOLES Es un framework de Stubs, pero además
nos permite testear clases selladas, clases con constructores privados, métodos estáticos, no virtuales… mediante el uso delegados (o lambdas).
QUÉ ES EL FRAMEWORK DE MOLES Delegatefs.ReadAllTextString = delegate(string f)
{
Assert.IsTrue(f == fileName);
return content;
};
Lambdafs.ReadAllTextString = (f) =>
{
Assert.IsTrue(f == fileName);
return content;
};
DIFERENCIA ENTRE STUBS Y MOCKS Stubs sirven para simular funcionalidad.
Mocks sirven para comprobar interacción a través de caracterísiticas de verificación.
Para hacer mocking hace falta hacer stubbing
DIFERENCIA ENTRE MOLES Y STUBS Stubs: Para testear clases que
implementan interfaces o clases no selladas con métodos que se pueden sobreescribir (Esto podría hacerse con otros frameworks de mock tales como Moq, RinhoMocks…)
Moles: Para testear clases selladas y con métodos estáticos o que no se pueden sobrescribir (Clases que tenga fuertes dependencias).
DIFERENCIA ENTRE MOLES Y STUBS Stubs: Empieza por el prefijo S. Para un
tipo T tendremos una implementación de cada método virtual o abstracto, propiedades y eventos.
Moles: Empiezan por el prefijo M y para un tipo T tendremos una implementación para cada miembro no abstracto.
CUANDO USAR MOLES Ó STUBS Usaremos stubs para aislar
dependencias haciendo usos de interfaces.
Usaremos moles cuando necesitemos testear frameworks o código de terceros que no suministran un API testeable.
DEMOS
REFERENCIAS Microsoft Research Pex & Moles
http://research.microsoft.com/en-us/projects/pex/
Descargashttp://
research.microsoft.com/en-us/projects/pex/downloads.aspx
Geekshttp://
geeks.ms/search/SearchResults.aspx?q=moles