Asp.Net Mvc Unittesting действия контроллера - PullRequest
0 голосов
/ 29 октября 2009

У меня есть следующее действие, которое я пытаюсь выполнить модульным тестом:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Default(ProductsViewModel model)
    {
        var locationId = model.LocationId;
        var locationText = model.LocationText;

        return locationId > 0 ? Summary(locationId, locationText, 1, "Date", true) : View();
    }

Если модель представления пуста, то возвращается только представление. Но если он содержит идентификатор, то вызывается суммарное действие, которое выполняет всю работу (вызов базы данных, создание новой модели представления и т. Д.).

Но как я могу утверждать в модульном тесте, что он назывался?

1 Ответ

2 голосов
/ 29 октября 2009

Предположительно, у вас уже есть тесты для Summary, которые охватывают то, что он должен делать. В этом случае я, вероятно, выбрал бы что-то, что отличало бы их, то есть что-то, что было бы правдой, только если был вызван Summary, и проверил его. Например, в случае вызова Summary вы можете проверить ненулевую модель и, возможно, свойство модели установлено правильно. Единственная альтернатива, которую я вижу, - это частичная насмешка над контроллером и установка ожидания вызова метода.

Обратите внимание, я не предполагаю, что вы делаете TDD, но на вашем месте это было бы спорным. Если бы вы работали с TDD, то у вас уже было бы множество тестов для большей части того, что делает Summary (вероятно), и вы бы ввели использование Summary в результате рефакторинга. На этом этапе ваши существующие тесты - и ваши тесты для Summary - вероятно, будут достаточными, и вам не понадобятся дополнительные тесты. По крайней мере, вам не нужно дублировать все, что тесты для Summary уже охватывают.

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