MVCCONTRIB TESTHELPER дает странную ошибку при использовании AssertViewRendered

StackOverflow https://stackoverflow.com/questions/4409592

Вопрос

Я пытаюсь использовать тестовый помощник 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");
}

Ошибка:

Тестовый метод тестирования .Web.controllers.homecontrollertests.index бросил исключение: mvccontrib.testhelper.calceresultsertionexception: Ожидаемый результат, чтобы иметь тип ViewResult. Это на самом деле типа ViewResult.

Есть идеи?

Это было полезно?

Решение

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

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

Другие советы

Mvccontrib.testheelper использует более старую версию MVC. У сайта теперь есть версия MVC3, но, как я пишу эту MVC4, и обновленный MVCCONTRIB.Testheelpers для MVC4 еще не существует.

Не касаясь источника, вы можете исправить это с помощью перенаправления привязки. Разместите это в ваше тестовое приложение .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.

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

Решение было загрузки исходного кода для MVCCONTRIB. В проекте MVCCONTRIB.Testhelper Удалите ссылку на System.Web.mvc (по умолчанию он указывает на версию 3) и добавить System.Web.mvc, но убедитесь, что вы ссылаетесь на версию 4.0.0.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top