MvcContrib TestHelper dando un error extraño al utilizar AssertViewRendered
-
08-10-2019 - |
Pregunta
Estoy intentando utilizar el Ayudante de prueba MvcContrib para probar un método controlador en MVC3.
El controlador:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
La prueba:
[TestMethod]
public void Index()
{
// Arrange
HomeController controller = new HomeController();
// Act
ViewResult result = controller.Index() as ViewResult;
// Assert
result.AssertViewRendered().ForView("Index");
}
El error:
Método de ensayo Tests.Web.Controllers.HomeControllerTests.Index lanzó excepción: MvcContrib.TestHelper.ActionResultAssertionException: Resultado esperado a ser de tipo ViewResult. En realidad, es de tipo ViewResult.
Algunas ideas?
Solución
Mi conjetura es que usted está utilizando el MVCContrib para MVC2, y utiliza el MVC2 ViewResult. Considerando que, usted está volviendo un ViewResult MVC3.
¿Usted ha intentado compilar MVCContrib contra MVC3?
Otros consejos
MVCContrib.TestHelper está utilizando una versión anterior del MVC. El sitio tiene una versión MVC3 ahora, pero ya que estoy escribiendo este MVC4 está fuera y no existe un MVCContrib.TestHelpers actualizados para MVC4 todavía.
Sin tocar la fuente se puede solucionar este problema con una redirección de unión. Colocar esto en tu app.config prueba:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Los puntos de muestra por encima de todos los conjuntos que piden MVC versión 1-3 para utilizar 4.
En caso de que alguien se encuentra con el mismo error en el año 2012, estoy teniendo el mismo problema con MVC4 y MvcContrib trabajando contra MVC3.
La solución fue la de descargar el código fuente de MvcContrib. En MVCContrib.TestHelper referencia del proyecto de eliminación de System.Web.Mvc (por defecto que apunta a la versión 3) y añadir System.Web.Mvc, pero asegúrese de que hace referencia a la versión 4.0.0.
A continuación, generar el proyecto, copiar archivos dll generadas con AP (para entrar en código TestHelper) en su solución y añadir una referencia a esa DLL. Trabajado para mí!