Mocks y Stubs

Que tal amigos, estoy jugando hace poco con RSpec, la verdad que me
atrapo :), pero hay un par de conceptos que no me quedan muy claros del
todo a pesar de leer varios aritculos gringos, basicamente quisiera
saber cual seria la definicion de un Mock y un Stub, y en que casos se
usarian, desde ya agradezco por sus aportes, es la comunidad mas activa
que he visto en mi trayectoria por el software libre ;).

Gracias.
Ruben.

PD: Tendra que ver algo mi pasado oscuro con PHP?

Vale Raul, muchas gracias, ahora va quedando algo mas claro el concepto.

Salud!
Ruben.

Hola Rubén,

Ruben Alexis D.
escribió:> Que tal amigos, estoy jugando hace poco con RSpec, la verdad que me

atrapo :), pero hay un par de conceptos que no me quedan muy claros del
todo a pesar de leer varios aritculos gringos, basicamente quisiera
saber cual seria la definicion de un Mock y un Stub, y en que casos se
usarian

Vaya por delante que no soy, ni mucho menos, un experto en temas de
testing. La diferencia está -creo yo- muy bien explicada en este
artículo de Martin F.:

Mocks Aren't Stubs

A grandes rasgos viene a decir que tanto stubs como mocks son ‘doubles’
(objetos ficticios que reemplazan a los que colaboran con el objeto que
estás probando). La diferencia entre ambos radica en que, mientras que
los stubs sirven para comprobar el estado de los objetos, los mocks
permiten comprobar en detalle las llamadas realizadas entre ellos.

Según Fowler, el enfoque del TDD tradicional es “usaré objetos reales en
mis pruebas, o stubs si los reales no son factibles”, mientras que en el
enfoque “mockista” el lema sería “usaré mocks siempre que pueda”.
Supongo que cada uno escoge, según su filosofía y el tipo de objeto a
probar, usar uno u otro enfoque.

Termino con un enlace a un libro online a punto de publicarse en papel,
y que IMHO tiene pinta de convertirse en una referencia obligada para
todos estos temas:

http://xunitpatterns.com

PD: Tendra que ver algo mi pasado oscuro con PHP?

Jajaja, espero que no, yo también he cacharreado bastante con PHP :smiley:

Saludos,
Raúl Murciano