tag net mvc asp c# asp.net asp.net-mvc unit-testing

c# - tag - partial views asp net mvc



unidad de prueba asp mvc view (6)

¿Cómo puedo probar en unidad la vista de una aplicación ASP MVC?

He probado el ayudante de prueba de contrib mvc ...

_controller.Index().AssertViewRendered();

Pero esto no prueba realmente la vista.

por ejemplo, felizmente puedo insertar un código falso en la vista y obtener la temida pantalla amarilla de la muerte, sin que mi prueba de unidad lo sepa.

¿Hay algún método estable para hacer esto? ¿Necesito un simulacro de la vista del motor? ¿Mvccontrib se ocupa de esto?

Pensé que este sería un requisito muy común, ¡pero no puedo encontrar mucho al respecto!

Gracias

EDITAR Lo que realmente estoy buscando es la verificación del tiempo de compilación, para garantizar que los cambios del modelo no afecten la vista.

esta pregunta contenía las instrucciones para habilitar la compilación de la vista de tiempo de compilación que es suficiente para mí por ahora. Compilar vistas en ASP.NET MVC


Debería consultar las herramientas de prueba web en el conjunto de pruebas de MS o una de una serie de otras herramientas de prueba web, como Selenium para probar las vistas, si necesita pruebas automatizadas para estas. Creo que le resultará más fácil que adaptar un marco de prueba de unidad.

Revelación completa: todavía pruebo mi interfaz de usuario a mano. No he encontrado suficientes beneficios para compensar el costo de aprender, configurar y mantener las pruebas web.


Es bastante fácil probar la vista en una página MVC de ASP.NET.

Te guío paso a paso en un video de YouTube . Aquí hay un resumen de los pasos requeridos:

  1. Necesitas crear una prueba unitaria en el controlador . Esto permite llamar fácilmente al resultado renderizado. Por ejemplo:

    public ActionResult TestScenario() { // setup some models return View("Page", model); }

  2. Su prueba de unidad necesita llamar a ControllerAction y verificar el resultado. En Pruebas de Aprobación esto sería:

    MvcApprovals.VerifyMvcPage(new MyController().TestScenario);

    Todo esto es bastante sencillo en ApprovalTests (www.approvaltests.com o nuget).


Es posible probar sus vistas mediante la prueba de unidad utilizando Visual Studio Test Tools, pero solo los valores creados por el controlador (por ejemplo, los valores en ViewBag: ViewBag.message = "My message." ) O el nombre de la vista renderizada:

[TestMethod] public void MyActionTest() { // Arrange var lController = new HomeController(); // Act var lResult = lController.MyAction() as ViewResult; // Assert Assert.IsTrue(lResult.ViewBag.message == "My message.", "Wrong Message in Viewbag."); Assert.IsTrue(lResult.ViewName == "MyView", "Incorrect view."); }

Si desea realizar una prueba automática de toda su vista con HTML, recomiendo Selenium IDE como una solución rápida y sencilla, y Selenium Web Driver para expertos y pruebas en varios navegadores.


Hay 3 opciones:

  1. Desea realizar una prueba unitaria para codificar en la vista. En este caso, debe mover el código al controlador, ya que no es responsabilidad de la vista tener este código.
  2. Desea estar seguro de que la vista se muestra realmente en el navegador. Utilice una herramienta de prueba de interfaz de usuario del navegador como waitin o selenium. Esto no crea una prueba aislada de la vista, sino de grandes partes de su aplicación. Eso suena como una ventaja, pero ¿hay algún valor en una prueba aislada de una vista?
  3. Quieres probar que el código en tu vista es un código compilable. Luego compila el código. Esto se puede hacer en una prueba unitaria, llamando manualmente a view.compile o activando el compilador de la vista en el proceso de compilación.

Las pruebas unitarias normalmente nunca prueban la IU porque es simplemente demasiado frágil para hacerlo.

Si bien podría argumentar que una prueba mínima sería que la Vista no falla con una excepción cuando intentamos renderizarla, esto también sería la única prueba unitaria que podríamos escribir para una Vista (ASP.NET MVC, WPF). , Windows Forms, etc. - realmente no importa).

Lo siguiente que usted (o su cliente) querría probar es que la Vista se representa correctamente, y no puede hacer esto de manera confiable con una prueba automatizada. Todo se reduce a que las inspecciones visuales se prueban mejor debido a que el retorno de la inversión es simplemente mejor que intentar desarrollar y mantener pruebas de IU automatizadas.


Mi consejo es que no se moleste en probar exhaustivamente sus puntos de vista. Es difícil, y si estás haciendo las cosas bien, de todos modos no habrá mucha lógica en ellas.

Dicho esto, WatiN es una buena herramienta para la prueba automatizada del navegador, no es exactamente lo que querías, pero funciona bien.