YoProgramo.NET Blog
Anotaciones de Programador

TDD Falsos Repositorios para Servicios

Ayer, Mario y Ángel me señalaron algunos errores en mi post anterior, en realidad es posible evitar tener que escribir la clase FalsoPostRepositorio.

Aquí les muestro como quedo mi test Crear_post_Test() donde utilizo Callback de moq.

        [TestMethod()]
        public void Crear_post_Test()
        {
            Dictionary<long, IPost> posts = new Dictionary<long, IPost>();
            var falso_repositorio = new Mock<IPostRepositorio>();
            falso_repositorio
                .Setup(x => x.Agregar(It.IsAny<IPost>()))
                .Callback((IPost p) => posts.Add(p.Id, p));
            
            IPostServicio servicioPost = new PostServicio(falso_repositorio.Object);
            IPost post = new Post();
            post.Id = 1;
            post.Title = "Prueba";

            servicioPost.Crear(post);

            Assert.AreEqual(posts.Count, 1);
            Assert.AreEqual(posts[1], post);
        }

y el test que prueba la actualización seria el siguiente:

        [TestMethod()]
        public void Actualizar_post()
        {
            Dictionary<long, IPost> posts = new Dictionary<long, IPost>();
            IPost post = new Post();
            post.Id = 1;
            post.Title = "Prueba";
            posts.Add(1, post);
            var falso_repositorio = new Mock<IPostRepositorio>();
                falso_repositorio
                    .Setup(x => x.Actualizar(IsAny<IPost>()))
                    .Callback<IPost>((p) => posts.ActualizarPost(p));

            IPostServicio servicioPost = new PostServicio(falso_repositorio.Object);
            post = new Post();
            post.Id = 1;
            post.Title = "Prueba actualizada";

            servicioPost.Actualizar(post);

            Assert.AreEqual(posts[1].Title, "Prueba actualizada");
        }

ActualizarPost() es un método de extensión.

December 3, 2009 08:10 by fabianfigueredo
Categorías: C# | TDD

Add comment


(Will show your Gravatar icon)

biuquote
Loading