2011-07-14 8 views
6

Tengo una prueba de unidad que funcionó bien en MVC2. La prueba simplemente define la Acción en el controlador, los stubs necesarios y prueba el nombre de la vista. Sin embargo, después de actualizar a MVC3, cuando invoco el método, aparece el error anterior. La actualización del sitio MVC3 funciona bien; Solo me fallan estas pruebas unitarias debido a la actualización. Gracias.Actualización ASP.NET MVC3 - "Intento por método [lo que sea] para acceder al método System.Web.Mvc.Controller.View (...) failed"

Aquí está mi acción:

public partial class GadgetController 
{ 
    [SetterProperty] 
    public IATCGadgetProxy ATCGadgetService { get; set; } 

    public ActionResult LoadForums(bool popularOnly, bool myThreads, int itemCount) 
    { 
     var model = ATCGadgetService.LoadForums(popularOnly, myThreads, itemCount); 

     return View("AskTheCommunity-Forums", model); 
    } 
} 

Aquí está la prueba. Está fallando cuando devuelve la vista desde la Acción.

[TestMethod] 
public void Test_Forums_Action_Type() 
{ 
    GadgetController controller = new GadgetController(); 
    controller.ATCGadgetService = new ATCGadgetServiceStub(); 
    ViewResult result = controller.LoadForums(false, false, 10) as ViewResult; 

    Assert.IsNotNull(result); 
    Assert.AreEqual("AskTheCommunity-Forums", result.ViewName); 
} 
+1

Por favor, muestre el código que está tratando de probar, así como su prueba. En su estado actual, su pregunta es difícil de responder. –

+0

Código anterior. Gracias –

+0

Tengo el mismo problema –

Respuesta

3

Una de las cosas que me volvían loca actualizar un proyecto a MVC 3 era estos errores extraños e inexplicables. Hasta que pensé que no todos los proyectos se actualizaron a MVC 3 (en su caso, ese podría ser el proyecto de prueba) y se mantuvo en MVC 2, lo que causó comportamientos muy extraños como el que usted describe. Compruebe la versión de System.Web.Mvc (y posiblemente ensamblados relacionados) en su proyecto de prueba.

+0

@Ryan te ayudó? No has dado ningún comentario. –

+1

Este fue el caso cuando estaba compilando un proyecto con una referencia a MVC 4 y luego implementando en un sitio web que tenía MVC 3. Cambié la referencia a MVC 3 y las cosas comenzaron a funcionar. ¡Gracias! –

4

Sé que este es un hilo antiguo, pero acabo de obtener el mismo error con MVC 5.2.3 ... pero con Xunit. Al final, realmente no importa ya que la forma de resolver el problema sería la misma.

Primero, debe asegurarse de que se haya agregado MVC a su proyecto de Pruebas. He añadido a través de NuGet:

Instalar Paquete Microsoft.AspNet.Mvc -Versión 5.2.3

o se puede alterar la versión a cualquier versión MVC que está utilizando.

Entonces, todavía tenía el error. Me acabo de enterar de que la página App.config faltaba información. Una vez que me aseguré de tener estas líneas, todo funcionó:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 

    <!-- Other config here --> 

    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
Cuestiones relacionadas