Испытание модуля контроллера ASP.NET MVC ошеломляет - PullRequest
2 голосов
/ 11 декабря 2008

Я изучал различные уроки, касающиеся правильного способа логики контроллера юнит-теста. Выполните следующие действия:

    public ActionResult Login()
    {
        //Return the index view if we're still here
        return View();
    }

Говорят на улице, чтобы подключить метод испытания, подобный этому:

    [TestMethod]
    public void TestLoginView()
    {
        //Set up an instance of the controller
        var thisController = new UserController();

        //Invoke the index action
        var actionResult = (ViewResult)thisController.Login();

        //Validate the test
        Assert.AreEqual("Login", actionResult.ViewName);
    }

Утверждение работает как ожидалось. Однако у этого контроллера есть базовый класс, который переопределяет функцию OnActionExecuting для настройки различных элементов хрома страницы (элементов навигации, хлебных крошек и т. Д.). Этот бит логики никогда не срабатывает.

Я могу легко протестировать модели, используемые в контроллере, однако я бы хотел провести тестирование на уровне контроллера. Идеи?

1 Ответ

5 голосов
/ 11 декабря 2008

Тестовая среда вызывает только конкретный тестируемый метод, она не имитирует ASP.NET MVC и запускает все события, которые обычно происходят. Я бы проверил вашу логику OnActionExecuting в отдельных тестах, чтобы убедиться, что она работает. Этот тест должен только проверить функциональность в связанном методе контроллера. Если у вас есть особые ожидания, основанные на срабатывании других событий, вам нужно смоделировать их в контексте контроллера перед вызовом метода контроллера.

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