Лучший способ модульного тестирования ASP.NET Методы действий MVC, использующие BindingHelperExtensions.Обновить откуда?

StackOverflow https://stackoverflow.com/questions/28723

  •  09-06-2019
  •  | 
  •  

Вопрос

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

    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)
Это было полезно?

Решение

Теперь я использую Модельбиндер так что мой метод действия может выглядеть (в основном) как:

    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");
        }
    }

Другие советы

Оберните это в интерфейс и издевайтесь над ним.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top