Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositorios en MVC ?

Estas en el tema de Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositorios en MVC ? en el foro de .NET en Foros del Web. Buenas ... Bueno, a ver... en los Tests de mi proyecto MVC uso Moq para crear un simple repositorio que herede de la interfaz designada. ...
  #1 (permalink)  
Antiguo 06/03/2014, 18:12
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 9 meses
Puntos: 7
Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositorios en MVC ?

Buenas ...


Bueno, a ver... en los Tests de mi proyecto MVC uso Moq para crear un simple repositorio que herede de la interfaz designada.

Después creo el controlador pasándolo ese "fake" de repositorio, el cual yo mismo le he auto asignado lo que tiene que hacer en esos métodos.

Después ejecuto el método a testear del controlador, recibo la respuesta y la valido.

Perfecto !!!

Ahora la pregunta es... Esos métodos que estoy testeando del controlador, los estoy testeando con un "Repositorio" que he creado en el mismo test, pero no estoy usando el verdadero repositorio que es el qeu realmente se conecta a la base de datos, por lo que el Repositorio real no lo estoy testeando....

Ese repositorio debería tener su propio proyecto de Test, o lo correcto sería que quitara esos Moq falsos y usara referencias reales al repositorio final ??

En fin... espero haberme explicado y que algún arquitecto pueda darme alguna idea sobre el tema... Gracias !!!
__________________
Charlie.
  #2 (permalink)  
Antiguo 07/03/2014, 05:14
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositori

El testing lo tienes que hacer con datos controlados para poder saber el resultado que tendría que dar y poder comprovar la validez del código. Y si lo decides hacer contra una BBDD, tendría que ser igualmente con unos datos controlados, no con los datos que actualmente tengas en producción. El motivo? Que quizás de aquí a unos meses tengas que modificar tu código y al lanzar el testing falle porque el contenido de la BBDD haya cambiado.

Esa es mi opinión personal y mirando por internet para contrastarla, veo que no es la única que va en ese sentido.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 07/03/2014, 05:41
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositori

Entiendo.

Entonces... el alcance del Testing va enfocado al controlador únicamente. Digamos que no abarcaría lo que es la librería del Repositorio en sí. ¿Cierto?

Es decir, te explico un poco mi situación, a ver si me puedes orientar un poco, jeje :)

Tengo los siguientes proyectos:
- Librería de Dominio (Contiene Interfaces y Entidades)
- Librería de Repositorio (Contiene Clases con métodos, GetCliente() por ejemplo, que recuperan datos de un Modelo de entity framework, que está tambien adjunto en esta librería)
- Proyecto MVC (Que usa los repositorios vía Ninject)
- Proyecto de Testing

En el proyecto de testing, efectivamente creo unos datos propios, y creo un repositorio vía Moq, y configuro sus métodos para usarlos luego desde el controlador. Y eso es lo que valido. Lo que pasa que claro... realmente los métodos que configuro y se usan para testear, los estoy programando yo en la prueba, no estoy usando Exactamente la misma funcionalidad que hay en el Repositorio de Entity Framework. ¿Me puedes confirmar si se supone que estoy en la filosofía correcta?

Gracias Malenko.
__________________
Charlie.
  #4 (permalink)  
Antiguo 07/03/2014, 06:00
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositori

Cita:
Iniciado por chcma Ver Mensaje
En el proyecto de testing, efectivamente creo unos datos propios, y creo un repositorio vía Moq, y configuro sus métodos para usarlos luego desde el controlador. Y eso es lo que valido. Lo que pasa que claro... realmente los métodos que configuro y se usan para testear, los estoy programando yo en la prueba, no estoy usando Exactamente la misma funcionalidad que hay en el Repositorio de Entity Framework. ¿Me puedes confirmar si se supone que estoy en la filosofía correcta?
Si, vas por buen camino. De los proyectos lo que te interesa es validor la parte que tiene la lógica de negocio, es decir la librería de repositorio.

Al realizar el testing, en el proyecto de testeo duplicarás parte del código que estás validando pero con la diferencia que es un código más especifico para tratar la función a probar. Un ejemplo sencillo sería probar las funciones de una calculadora. El testing de la suma de dos enteros sería llamar a la función "suma" de tu implementación y compararlo con el resultado de hacer la suma con el operador (" a + b"). No se si el ejemplo ha quedado claro xD Lo que quiero decir es que has de calcular el resultado para poderlo comparar con el del método. Es también una forma de documentar el código porque al ver las pruebas del test ves como se tendría que comportar. Y bueno, también se supone que la buena práctica indica programar primero los test y luego el código, aunque creo que poca gente lo hará así :P
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 07/03/2014, 06:22
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Algún Arquitecto .NET para asesorarme en hacer los Tests de los Repositori

Vale, creo que lo tengo claro. Gracias de nuevo señor Malenko :)
__________________
Charlie.

Etiquetas: mvc, net, repositorios, tests
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:59.