Почему этот ViewResult не выполняет утверждение AlwaysBeAView в MSpecMVC? - PullRequest
2 голосов
/ 06 декабря 2010

Я следовал учебному пособию Джеймса Брума , чтобы научить себя MSpec и некоторой связанной инфраструктуре. Я использую последнюю версию MSpec, MSpecMvc и ASP.NET MVC 2, и я не использую библиотеки J.P Boodhoo.

Когда я запускаю этот тест

[Subject(typeof(HomeController))]
public class when_the_home_controller_is_told_to_display_the_default_view
{
    static string key;
    static string message;
    static ActionResult result;
    static HomeController home_controller;

    Establish context = () =>
    {
        key = "Message";
        message = "Welcome to ASP.NET MVC!";
        home_controller = new HomeController();
    };

    Because of = () => result = home_controller.Index();

    It should_return_the_home_view = () => result.ShouldBeAView().And().ViewName.ShouldBeEmpty();
}

Я получаю следующую ошибку

должен вернуть вид из дома: Ошибка
Должен иметь тип System.Web.Mvc.ViewResult, но должен иметь тип System.Web.Mvc.ViewResult

Когда я делаю шаг по коду, он соглашается с утверждением в этом методе (в ActionResultExtensions.cs файле MSpecMVC)

public static ViewResultAnd ShouldBeAView(this ActionResult actionResult)
{
    actionResult.ShouldBeOfType<ViewResult>();
    return new ViewResultAnd(actionResult as ViewResult);
}

Хотя я могу подтвердить, что actionResult имеет тип System.Web.Mvc.ViewResult. Я использовал те же инструменты на другом компьютере для запуска других тестов, но не сталкивался с текущей проблемой.

1 Ответ

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

Расширения MSpec.MVC Джеймса Брума используют Mspec v0.2.Поскольку вы используете Mspec v0.3, существует несоответствие.Вы должны получить исходный код и обновить решение для использования MSpec v0.3.

Убедитесь, что расширения Mspec.MVC предназначены для той же версии .NET Framwork, что и ваше решение ASP.NET MVC (например, оба версии 4.0).Это также будет зависеть от того, какую версию MSpec вы используете.MSpec v0.3 скомпилирован как .NET 3.5, так и .NET 4.0

...