Лучший способ для модульного тестирования ASP.NET MVC методов действия, которые используют BindingHelperExtensions.UpdateFrom? - PullRequest
1 голос
/ 26 августа 2008

При обработке формы сообщения у меня есть что-то вроде

    public ActionResult Insert()
    {
        Order order = new Order();
        BindingHelperExtensions.UpdateFrom(order, this.Request.Form);

        this.orderService.Save(order);

        return this.RedirectToAction("Details", new { id = order.ID });
    }

Я не использую явные параметры в методе, так как ожидаю адаптации к переменному количеству полей и т. Д., А метод с 20+ параметрами непривлекательн.

Полагаю, мой единственный вариант - макетировать весь HttpRequest, эквивалентный тому, что сделал Роб Конери. Это лучшая практика? Трудно сказать, с такой новой рамкой.

Я также видел решения, включающие использование ActionFilter, чтобы вы могли преобразовать указанную выше сигнатуру метода во что-то вроде

[SomeFilter]
public Insert(Contact contact)

Ответы [ 3 ]

1 голос
/ 30 августа 2008

Я сейчас использую ModelBinder , чтобы мой метод действия мог выглядеть (в основном) как:

    public ActionResult Insert(Contact contact)
    {

        if (this.ViewData.ModelState.IsValid)
        {
            this.contactService.SaveContact(contact);

            return this.RedirectToAction("Details", new { id = contact.ID });
        }
        else
        {
            return this.RedirectToAction("Create");
        }
    }
0 голосов
/ 27 августа 2008

Используйте NameValueDeserializer из http://www.codeplex.com/MVCContrib вместо UpdateFrom.

0 голосов
/ 26 августа 2008

Оберните его в интерфейс и смоделируйте.

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