100 likes | 228 Views
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 )
E N D
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 • Delegate fs.ReadAllTextString= delegate(string f) { Assert.IsTrue(f == fileName); return content; }; • Lambda fs.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étodosque se puedensobreescribir(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 paraaislardependenciashaciendousos de interfaces. • Usaremos moles cuandonecesitemostestear frameworks o código de tercerosque no suministran un API testeable.
Referencias • Microsoft ResearchPex & Moles • http://research.microsoft.com/en-us/projects/pex/ • Descargas • http://research.microsoft.com/en-us/projects/pex/downloads.aspx • Geeks • http://geeks.ms/search/SearchResults.aspx?q=moles