Al desarrollar mediante TDD siempre escribimos el test antes que el
SUT. Para este caso voy a poner un ejemplo bastante claro.
Necesito crear una objeto que dependeciendo de la hora del sistema me
diga si es de dia o si es de noche.
Mi primer test podria ser así. No tengais en cuenta el código por
favor.
[Test]
public void It_is_Day()
{
bool IsDay = new DayChecker().ItisDay();
Assert.IsTrue(IsDay);
}
Implementación;
public class DayChecker
{
public bool ItIsDay()
{
return DateNow.Hour >= 8 DateNow.Hour <= 18;
}
}
Desde el primer momento nos damos cuenta que este test funcionará sólo
cuando estemos entre las 8 de la mañana y las 6 de la tarde.
Deberiamos eliminar la dependencia de DateNow.
interface IDateService
{
DateTime GetDate();
}
Modificamos el test
[Test]
public void It_is_Day()
{
var fakeTimeService = new Mock<IDateService>();
fakeTimeService.except(x => x.ItIsDay()).return("8");
bool IsDay = new DayChecker(fakeTimeService).ItisDay();
Assert.IsTrue(IsDay);
}
Y aquí viene mi duda si usamos un framework dinámico de mocks,
necesitamos conocer y pensar como vamos a escribir el código del SUT.
Yo pensaba que esto erá lo que debiamos evitar al seguir TDD.
Concentrarnos en el api externo de las clases, como se usan, como
colaboran los objectos entre si y no en el código interno del SUT
hasta que no estuviera escrito el primer test. No se si me he
explicado bien...
Saludos
--
Has recibido este mensaje porque estás suscrito al grupo "TDDev" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a tdde...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a tddev-sp+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/tddev-sp?hl=es.
Revisaré la documentación y veré si puedo hacer uso de la clase real.
Sobre el libro no lo conocía, lo miraré con detalle!
Gracias de nuevo
> 2011/11/28 Carlos Durbán <kake...@gmail.com>