Question

Je tente d'utiliser l'assistant de test MvcContrib pour tester une méthode de contrôleur MVC3.

Le contrôleur:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

Le test:

[TestMethod]
public void Index()
{
    // Arrange
    HomeController controller = new HomeController();

    // Act
    ViewResult result = controller.Index() as ViewResult;

    // Assert
    result.AssertViewRendered().ForView("Index");
}

L'erreur:

  

Méthode d'essai Tests.Web.Controllers.HomeControllerTests.Index jeta exception:       MvcContrib.TestHelper.ActionResultAssertionException:          Résultat attendu pour être de type ViewResult. Il est en fait de type ViewResult.

Toutes les idées?

Était-ce utile?

La solution

Je suppose que vous utilisez le MvcContrib pour MVC2, et il utilise le MVC2 ViewResult. Alors, vous retournez un MVC3 ViewResult.

Avez-vous essayé la compilation MvcContrib contre MVC3?

Autres conseils

MVCContrib.TestHelper utilise une ancienne version de MVC. Le site ne dispose d'une version MVC3 maintenant, mais comme je l'écris ce MVC4 est sorti et une mise à jour pour MVCContrib.TestHelpers MVC4 n'existe pas encore.

Sans toucher la source que vous pouvez résoudre ce problème avec une redirection de liaison. Placez dans votre app.config test:

<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> 

Les points d'échantillonnage ci-dessus tous les assemblages pour la version demandant MVC 1-3 à utiliser 4.

En cas quelqu'un vient dans la même erreur en 2012, je vais avoir le même problème avec MVC4 et MvcContrib travailler contre MVC3.

La solution est de télécharger le code source pour MvcContrib. Dans projet MVCContrib.TestHelper supprimer la référence à System.Web.Mvc (par défaut, il pointe vers la version 3) et ajouter System.Web.Mvc, mais assurez-vous référence à la version 4.0.0.

Ensuite, reconstituez le projet, copier les fichiers générés dll avec pdb (pour entrer dans le code TestHelper) dans votre solution et ajouter une référence à cette dll. A travaillé pour moi!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top