Testeando Rutas con MoQ
Algunas semanas atrás junto a Edgardo Rossetto presentamos el nuevo framework MVC para desarrollo web. Si te acordás, parte de la presentación contaba cómo el engine de Rutas nos permitía realizar test unitarios sobre las mismas, permitiéndonos controlar el acceso a nuestras acciones en el controlador.
Durante la previa a la presentación, Edgardo escribió el código que te copio más abajo. En él se muestra un test sobre una ruta utilizando un framework de Mocking llamado Moq.
1: [TestClass]
2: public class HomeControllerFixture
3: {
4: [TestMethod]
5: public void ShouldRouteToDefaultAction()
6: {
7: RouteCollection routes = new RouteCollection();
8: RouteManager.RegisterRoutes(routes);
9:
10: var request = new Mock<IHttpRequest>();
11: request.Expect(x => x.AppRelativeCurrentExecutionFilePath).Returns("~/Default.aspx");
12: request.Expect(x => x.PathInfo).Returns(String.Empty);
13: request.Expect(x => x.HttpMethod).Returns("GET");
14:
15: var context = new Mock<IHttpContext>();
16: context.Expect(x => x.Request).Returns(request.Object);
17:
18: RouteData routeData = routes.GetRouteData(context.Object);
19:
20: Assert.IsNotNull(routeData);
21: Assert.AreEqual("Home", routeData.Values["controller"]);
22: Assert.AreEqual("Index", routeData.Values["action"]);
23: }
24: }
Fijate cómo al utilizar un framework de Mocking, no es necesario crear clases Mock que implementen las interfaces necesarias para definir el contexto en el cual funciona el engine de Rutas. Las rutas son definidas para un IHttpContext, pero no se trata del Contexto real.
Más adelante escribiré un articulo contando un poco sobre TDD. Es un tema que me gusta mucho, y del cual probablemente esté hablando frecuentemente, así que viene bien un post al cual linkear.
Saludos!
Comments
Anonymous
January 31, 2008
Es de mi mayor placer anunciarles que el próximo Viernes 8 de Febrero , Daniel Cazzulino (o sóloAnonymous
January 31, 2008
Es de mi mayor placer anunciarles que el próximo Viernes 8 de Febrero , Daniel Cazzulino (o sólo