Está en la página 1de 9

En esta Sesin veremos los siguientes cuatro laboratorios:

Escribiendo Testeos Unitarios en Proyectos MVC.


Configurar Rutas en MVC
Validacin 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.
Cmo 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 seccin vamos a concentrarnos en el primer punto, es decir, Testeo Unitario.


Solo una rpida recapitulacin si necesitamos hacer testeo unitario al siguiente
mtodo btngenerateinvoices_clickde Code behind de ASP.NET, tenemos los siguientes
problemas:

Cmo hacemos para crear los objetos sender y eventargs?


El cdigo de abajo se ejecuta bajo el objeto HttpContext, Cmo puedo imitarlo?
Qu pasa con los controles de interfaz de usuario de ASP.NET, Cmo accedo a estos?
Qu pasa con otros objetos de ASP.NET como objeto sesion,y aplicacion, cmo accedo
a estos?

Muchos desarrolladores podran hablar acerca de mock tests, rhino mocks,etc. pero todava
esto es desapercibido y la compliacion aumenta con las variables de sesion, objetos de data
view, controles ASP.NET UI, creando aun mas confusin.
Asi que lo que haremos en esta seccin es crear una simple aplicacin MVC y haremos teste
unitario en aplicaciones ASp.NEt usando el testeo unitario de Framework VSTS.

Paso 1: Crear un simple proyecto las mostrar Customer.


El primer paso es crear un simple proyecto MVC. Usaremos el mismo proyecto el cual nosotros
temos creado en MVC(Modelo Vista Controlador) del dia 1(MyFirstHelloWorld). En caso no tengas
el proyecto mencionado, por favor crea uno usando el enlace de arriba.

La clase controlador al final del da 1 es una simple clase .NET. Por ejemplo, si miras el cdigo
del proyecto cercanamente, puedes ver fcilmente la clase controlador de Customer con se
muestra a continuacin:
En simples palabras este es una simple clase .NET podemos fcilmente instanciar la clase y
crear automticamente 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.


Vamos a usar nuestro testeo unitario del framework de VSTS para testear la clase controlador.
Agrega un nuevo proyecto a su solucin usando la plantilla Proyecto Prueba Unitaria.
Paso 3: Agregar referencias apropiadas al proyecto
Necesitamos agregar un referencia a la aplicacin MVC en nuestro proyecto de prueba
unitaria(MVCUnitTest), para que podamos controlar la clase Controlador.

Una vez agregado la referencia , deberas ver en la aplicacin 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, abre la clase de prueba unitaria,es
decir UnitTest1.cs. En esta clase crear un simple mtodo de teste llamado DisplayCustomer el
cual es atribuido por el atributo TestMethod como se muestra en el siguiente cdigo.

Si tu ves el siguiente pedazo de cdigo estamos creando un objeto de la clase controlador,


invocando la accin del controlador, es decir, DisplayCustomer y entonce verificamos si el
nombre de la vista es DisplayCustomer. Si ellos son igual esto significa el paso de la prueba o
en caso contrario esto es fallido.
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.

Si las cosas van bien tu deberias ver una indicacin de color verde que indica que la prueba ha
pasado o caso contrario deberas ver un color rojo con el detalle indicando porque la prueba ha
fallado.

Lab 7: Entendiendo el ruteo MVC


Introduccin
Al final del da, MVC no es nada ms que una direccin de URL asignada a los controladores y
los controladores asignados a acciones.

Por ejemplo cuando un usuario envia un requerimientio de URL como


http://www.maninformatic.com/UbicaProducto del navegador, estas acciones son asignadas
con los controladores de MVC, y los controladores de MVC finalmente invocan esas funciones.

Lo siguiente es una simple tabla el cual muestra cmo todo esto se ve as.

Aadiendo an ms a la complicacin que podemos tener varias direcciones URL asignadas a un


controlador o se puede tener ms de un controlador asigna a una sola URL. Por ejemplo, puedes
tenerwww.maninformatic.com/contactenos y www.maninformatic.com/conocenos asignad
a a un solo controlador llamado ConocenosController
.

Sera muy bueno si tenemos algn tipo de mecanismo por el cual podemos configurar estas
asignaciones. Eso es lo que exactamente MVC routing significa. El enrutamiento MVC ayuda a
configurar y asignar la direccin URL con los controladores fcilmente.

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.asax.cs


Todas las asignaciones de rutas son almacenados en el archivo de cdigo fuente RouteConfig.cs.
As que como primer paso es que tenemos que ir a cambiar este archivo.
Todas las asignaciones de rutas son almacenadas dentro de la coleccin llamada routes. Esta
coleccin pertenece al namespaces System.Web.Routing. Para agregar una ruta tu necesitas
llamar el mtodo MapRoute y pasar tres parmetros name, url y defaults.

Debajo est una captura de retazo de cdigo de la funcin MapRoute.

Name es el nombre principal por la cual la ruta ser identificada dentro la coleccin.
URL define que tipo de formato de URL queremos conectar con el controlador.En el
pedazo de cdigo siguiente decimos que el formato URL es View/ViewCustomer.
Defaults define la clase controlador y las funciones de accion los cuales sern invocados
cuando la URl es llamada. Por ejemplo, en el cdigo siguiente, decimos que cuando
View/ViewCustomer es llamado, este invocar la clase controlador Customer y la
funcion accin invocada sera DisplayCustomer.

En caso su controlador tome parmetros, puede usar el { (llaves).Por ejemplo en el siguiente


pedazo de codigo, nosotros hemos usado { para especificar que podemos tener un parmetro
id. Si quieres definir los parmetros como opcionales puedes usar el
enum UrlParameter.Optional.

Lo primero es comentar el cdigo de asignacin predeterminada. Vamos a explicar el cdigo de


asignacin predeterminada ms tarde.

Ingresamos el siguiente codigo, el cual significa cuando llamamos a


http:/localhost/view/ViewCustomer esto invocar al controlador Customer y llamara la funcion
DisplayCustomer.
Paso 3: Ejecuta la aplicacin
Si ejecutas la aplicacin deberias ver lo siguiente:

Nota: No muestra ningn nombre, porque esto tiene que ser enviado del formulario, y puedes
probar cambiando el la propiedad action del formulario(view/viewCustomer).

Si recuerdas nosotros comentamos la entrada de ruta por defecto(default), vamos a entender


qu significa exactamente ese cdigo.
{controller}/{action}/{id} define este que la URL ser automticamente llamado con la
convencin Controlador(nombre/funcin) accion (nombre/valor). si tienes una clase
controlador con Customer y funcin accin como Search entonces el URL ser estructurada
automticamente como htt://www.maninformatic.com/Customer/Search.

También podría gustarte