MvcContrib TestHelper дает странную ошибку при использовании AssertViewRendered - PullRequest
7 голосов
/ 10 декабря 2010

Я пытаюсь использовать помощник по тестированию MvcContrib для тестирования метода контроллера в MVC3.

Контроллер:

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

Тест:

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

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

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

Ошибка:

Метод тестирования Tests.Web.Controllers.HomeControllerTests.Index вызвал исключение: MvcContrib.TestHelper.ActionResultAssertionException: Ожидаемый результат будет иметь тип ViewResult. На самом деле это тип ViewResult.

Есть идеи?

Ответы [ 3 ]

7 голосов
/ 17 сентября 2012

MVCContrib.TestHelper использует более старую версию MVC.Сейчас на сайте есть версия MVC3, но пока я пишу этот MVC4, обновленного MVCContrib.TestHelpers для MVC4 пока не существует.

Не касаясь источника, вы можете исправить это с помощью перенаправления привязки.Поместите это в ваш тестовый app.config:

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

Приведенный выше пример указывает на все сборки, запрашивающие MVC версии 1-3 для использования 4.

3 голосов
/ 10 декабря 2010

Думаю, вы используете MVCContrib для MVC2, а он использует MVC2 ViewResult.Принимая во внимание, что вы возвращаете MVC3 ViewResult.

Вы пытались скомпилировать MVCContrib против MVC3?

1 голос
/ 08 сентября 2012

Если в 2012 году кто-то сталкивался с такой же ошибкой, у меня возникла та же проблема с MVC4 и MvcContrib, работающими с MVC3.

Решением было загрузить исходный код для MvcContrib.В проекте MVCContrib.TestHelper удалите ссылку на System.Web.Mvc (по умолчанию она указывает на версию 3) и добавьте System.Web.Mvc, но убедитесь, что вы ссылаетесь на версию 4.0.0.

Затем пересоберите проектскопируйте сгенерированные dll-файлы с помощью pdb (для входа в код TestHelper) в свое решение и добавьте ссылку на эту dll.Работал на меня!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...