Испытание модуля контроллера ASP.NET MVC ошеломляет

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

    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, чтобы настроить различные элементы хрома страницы (элементы навигации, хлебные крошки и т. Д.). Этот бит логики никогда не срабатывает.

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

10.12.2008 21:03:02
1 ОТВЕТ

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

5
10.12.2008 21:27:05
Я немного обеспокоен тем, что таким образом можно закоротить стек событий.
bxlewi1 10.12.2008 21:37:37