https://youtu.be/JNpeP6FxE3w?si=wlRep1LneCQCQmMD
En un post anterior donde estoy llevando mis notas del libro Tha art of unit testing hay una parte donde habla de seams y la verdad quizás sea porque mi nivel de inglés no es muy bueno, pero en ese momento no lo entendí, pero … la vida pone estos regalos y Fran hizo un video donde explica este tema y creo que me quedo bastante claro el tema.
En resumen tienes una clase que necesitas probar, pero, esa clase instancia algunos servicios, por lo tanto cuando intentas probar no puedes hacer un doble de estos servicios.
Lo que explica Fran es que se identifican los lugares donde se instancian los servicios y se extraen a un método usando el refactoring extract method, esos métodos se marcan con el modificador que indicar que se pueden sobreescribir; luego se crea otra clase y se hereda de la clase original y allí se sobreescriben estos métodos que se crearon previamente, en la sobreescritura ya se pueden retornar los valores que se requieran para los test y en los test usamos esta nueva clase mock.
De esta manera no afectamos la clase original y podemos hacer test a nuestra clase y cómo side effect también podemos crear variables que nos ayuden en el proceso de test.
Muy recomendado ver el video de Fran.