You are on page 1of 9

En esta Sesión veremos los siguientes cuatro laboratorios

:

 Escribiendo Testeos Unitarios en Proyectos MVC.
 Configurar Rutas en MVC
 Validación de Rutas en MVC
 Configurando Rutas de salida en MVC

Lab 06: Testeo Unitario en Proyectos MVC
Cuando empezamos toda la serie MVC(Sesion 1) empezamos con dos problemas relacionados al
code-behind.
¿Cómo podemos hacer testeos unitarios en ASP.NET code behind?
¿Como podemos reusar el code behind de ASP.NET con diferentes interfaces de usuarios?

En esta sección vamos a concentrarnos en el primer punto, es decir, Testeo Unitario.
Solo una rápida recapitulación si necesitamos hacer testeo unitario al siguiente
método btngenerateinvoices_clickde Code behind de ASP.NET, tenemos los siguientes
problemas:

 ¿Cómo hacemos para crear los objetos sender y eventargs?
 El código de abajo se ejecuta bajo el objeto HttpContext, ¿Cómo puedo imitarlo?
 ¿Qué pasa con los controles de interfaz de usuario de ASP.NET, Cómo accedo a estos?
 ¿Qué pasa con otros objetos de ASP.NET como objeto sesion,y aplicacion, cómo accedo
a estos?

Muchos desarrolladores podrían hablar acerca de mock tests, rhino mocks,etc. pero todavía
esto es desapercibido y la compliacion aumenta con las variables de sesion, objetos de data
view, controles ASP.NET UI, creando aun mas confusión.

Asi que lo que haremos en esta sección es crear una simple aplicación MVC y haremos teste unitario en aplicaciones ASp. por favor crea uno usando el enlace de arriba. Usaremos el mismo proyecto el cual nosotros temos creado en MVC(Modelo Vista Controlador) del dia 1(MyFirstHelloWorld).NEt usando el testeo unitario de Framework VSTS. Paso 1: Crear un simple proyecto las mostrar Customer. En caso no tengas el proyecto mencionado. si miras el código del proyecto cercanamente.NET. El primer paso es crear un simple proyecto MVC. La clase controlador al final del día 1 es una simple clase . puedes ver fácilmente la clase controlador de Customer con se muestra a continuación: . Por ejemplo.

Vamos a usar nuestro testeo unitario del framework de VSTS para testear la clase controlador. Agrega un nuevo proyecto a su solución usando la plantilla Proyecto Prueba Unitaria.En simples palabras este es una simple clase . .NET podemos fácilmente instanciar la clase y crear automáticamente testeos unitarios para el mismo. Esto es exactamente lo que vamos hacer en nuestros siguientes pasos: Paso 2: Agregando un simple proyecto de testeo unitario.

Si ellos son igual esto significa el paso de la prueba o en caso contrario esto es fallido.es decir UnitTest1. DisplayCustomer y entonce verificamos si el nombre de la vista es DisplayCustomer. Una vez agregado la referencia . es decir.Paso 3: Agregar referencias apropiadas al proyecto Necesitamos agregar un referencia a la aplicación MVC en nuestro proyecto de prueba unitaria(MVCUnitTest). Si tu ves el siguiente pedazo de código estamos creando un objeto de la clase controlador. abre la clase de prueba unitaria.cs. . invocando la acción del controlador. para que podamos controlar la clase Controlador. En esta clase crear un simple método de teste llamado DisplayCustomer el cual es atribuido por el atributo TestMethod como se muestra en el siguiente código. deberías ver en la aplicación MVC e la referencia de proyecto como se muestra en la siguiente imagen: Paso 4: Escribir la prueba unitario Una vez que tengas agregado la referencia.

Paso 5: Finalmente ejecutamos la prueba unitaria Una vez escrito la prueba es tiempo de ejecutar caso de prueba para lo cual vamos hacer click en el menú Prueba->Ventanas-> Explorador de Pruebas. En el Explorador de pruebas hacer click derecho y seleccionar Ejecutar Pruebas Seleccionadas. Lab 7: Entendiendo el ruteo MVC Introducción . Si las cosas van bien tu deberias ver una indicación de color verde que indica que la prueba ha pasado o caso contrario deberías ver un color rojo con el detalle indicando porque la prueba ha fallado.

maninformatic. Por ejemplo.com/conocenos asignad a a un solo controlador llamado ConocenosController .com/UbicaProducto del navegador. Lo siguiente es una simple tabla el cual muestra cómo todo esto se ve así.maninformatic.com/contactenos y www.Al final del día. estas acciones son asignadas con los controladores de MVC. MVC no es nada más que una dirección de URL asignada a los controladores y los controladores asignados a acciones. y los controladores de MVC finalmente invocan esas funciones. Añadiendo aún más a la complicación que podemos tener varias direcciones URL asignadas a un controlador o se puede tener más de un controlador asigna a una sola URL. Por ejemplo cuando un usuario envia un requerimientio de URL como http://www. puedes tenerwww.maninformatic.

asax. El enrutamiento MVC ayuda a configurar y asignar la dirección URL con los controladores fácilmente. . Paso 1: Tomar el proyecto MVC creado en el dia 1 Vamos a tomas el mismo proyecto de Customer( MyFisrtHelloWorld) que hemos desarrollado en la seccion anterior. Paso 2: Cambiar Global. Eso es lo que exactamente MVC routing significa. Sería muy bueno si tenemos algún tipo de mecanismo por el cual podemos configurar estas asignaciones. Así que como primer paso es que tenemos que ir a cambiar este archivo.cs Todas las asignaciones de rutas son almacenados en el archivo de código fuente RouteConfig.cs. .

nosotros hemos usado { para especificar que podemos tener un parámetro id. Por ejemplo. Ingresamos el siguiente codigo. Para agregar una ruta tu necesitas llamar el método MapRoute y pasar tres parámetros name. en el código siguiente. el cual significa cuando llamamos a http:/localhost/view/ViewCustomer esto invocará al controlador Customer y llamara la funcion DisplayCustomer. Debajo está una captura de retazo de código de la función MapRoute. Esta colección pertenece al namespaces System. decimos que cuando View/ViewCustomer es llamado. url y defaults.  Defaults define la clase controlador y las funciones de accion los cuales serán invocados cuando la URl es llamada. En caso su controlador tome parámetros. Si quieres definir los parámetros como opcionales puedes usar el enum UrlParameter. Vamos a explicar el código de asignación predeterminada más tarde. este invocará la clase controlador Customer y la funcion acción invocada sera DisplayCustomer.Routing.Todas las asignaciones de rutas son almacenadas dentro de la colección llamada routes.Optional. .  URL define que tipo de formato de URL queremos conectar con el controlador. Lo primero es comentar el código de asignación predeterminada.En el pedazo de código siguiente decimos que el formato URL es View/ViewCustomer.Web.  Name es el nombre principal por la cual la ruta será identificada dentro la colección.Por ejemplo en el siguiente pedazo de codigo. puede usar el { (llaves).

porque esto tiene que ser enviado del formulario. y puedes probar cambiando el la propiedad action del formulario(view/viewCustomer). vamos a entender qué significa exactamente ese código.com/Customer/Search. . “{controller}/{action}/{id}” define este que la URL será automáticamente llamado con la convención Controlador(nombre/función) accion (nombre/valor).Paso 3: Ejecuta la aplicación Si ejecutas la aplicación deberias ver lo siguiente: Nota: No muestra ningún nombre. Si recuerdas nosotros comentamos la entrada de ruta por defecto(default).maninformatic. si tienes una clase controlador con Customer y función acción como Search entonces el URL será estructurada automáticamente como htt://www.