2010-02-22 12 views
19

¿Cómo puedo probar la unidad de la vista de una aplicación ASP MVC?unidad de prueba asp mvc view

He probado el ayudante de prueba contrib ... mvc

_controller.Index().AssertViewRendered(); 

pero esto no significa realmente pone a prueba la vista.

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

¿Hay algún método estabilizado para hacer esto? ¿Necesito un simulacro del motor de visualización? ¿Se adapta mvccontrib a esto?

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

Gracias

EDIT lo que estoy realmente después es compilar la comprobación de tiempo, para asegurar que los cambios de modelo no afectan a la vista.

esta pregunta contenía las instrucciones para habilitar la compilación de vista de tiempo de compilación que es suficiente para mí por el momento. Compile Views in ASP.NET MVC

+0

Acabo de encontrar este enlace http://devermind.com/aspnet/aspnet-mvc-tip-turn-on-compile-time-view-checking/ con el que estaría contento, realmente no estoy buscando para probar cualquier lógica, solo para asegurarme de que cualquier cambio en el modelo no afecte mis puntos de vista. Desafortunadamente está bloqueado en el trabajo como un sitio de juegos lol. ¡Así que tendré que esperar hasta que llegue a casa para comprobarlo! –

Respuesta

13

Hay 3 opciones:

  1. desea probar la unidad 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 asegurarse de que la vista se muestre realmente en el navegador. Use una herramienta de prueba de interfaz de usuario del navegador como waitin o selenio. 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. Quiere probar ese código en su 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 vista en el proceso de compilación.
+2

¿Podría explicar el punto 3? –

+1

Acceoted para el punto 3 :) –

+0

Estoy de acuerdo con esto. Si está probando si se procesa una vista, está ingresando a los dominios de código de prueba que no está bajo su influencia. Si tiene alguna lógica, no importa cuán trivial, pertenece a un ViewModel. Ahora que deberías poder probar fácilmente. –

2

Debe buscar en las herramientas de prueba web en el conjunto de pruebas de MS o en una de una serie de otras herramientas de prueba web, como Selenium para probar las vistas, si necesita pruebas automatizadas para estas. Creo que les resultará más fácil que adaptar un marco de prueba unitaria.

Descripción completa: Todavía pruebo mi IU a mano. No he encontrado suficiente beneficio para compensar el costo de aprendizaje, configuración y mantenimiento de las pruebas web.

0

Mi consejo es que no se moleste en probar exhaustivamente sus vistas. 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 las pruebas automáticas del navegador, no es exactamente lo que quería, pero funciona bien.

2

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 se bloquea con una excepción cuando intentemos renderizarla, esta sería también la única prueba de unidad que podríamos escribir para una Vista (ASP. NET MVC, WPF, Windows Forms, etc. - en realidad no importa).

Lo siguiente que usted (o su cliente) desearía probar es que la Vista se muestra correctamente, y no puede hacer esto de manera confiable con una prueba automatizada. Lo que todo se reduce a es que las Vistas son mejor probadas por Inspección Visual porque el retorno de la inversión en eso es simplemente mejor que tratar de desarrollar y mantener las pruebas de UI automatizadas.

0

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

I walk you through step-by-step in a YouTube video. He aquí un resumen de los pasos necesarios:

  1. Es necesario crear una prueba de unidad en el controlador . Esto permite llamar fácilmente el resultado representado. Por ejemplo:

    public ActionResult TestScenario() 
    { 
        // setup some models 
        return View("Page", model); 
    } 
    
  2. Su prueba de la unidad tiene que llamar a que ControllerAction, y verificar el resultado. En ApprovalTests esto sería:

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

    Todo esto es bastante recta hacia adelante en ApprovalTests (www.approvaltests.com o Nuget).

+1

¿Dónde está la documentación para las pruebas de ASP.NET MVC? –

3

Es posible poner a prueba sus puntos de vista a través de prueba de la unidad utilizando Visual Studio herramientas de prueba, pero sólo los valores, creado por el controlador (por ejemplo, valores de 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 autoevaluar toda su vista incluyendo HTML, recomiendo Selenium IDE como solución rápida y simple y Selenium Web Driver para pruebas y expertos en exploradores cruzados.