Метод контроллера модульного тестирования MVC с аргументом FormCollection - PullRequest
1 голос
/ 28 декабря 2010

У меня есть метод контроллера, который принимает FormCollection в качестве параметра. метод контроллера затем строит модель, используя UpdateModel (Model, new [] {P1, P2});

Я бы хотел провести модульное тестирование по вышеуказанному методу. Я заполняю коллекцию форм значениями P1 и P2, но модель вызывается неправильно при вызове из модульного тестирования.

Кто-нибудь сталкивался с подобной проблемой?

1 Ответ

3 голосов
/ 28 декабря 2010

Метод UpdateModel ищет объект Request при заполнении модели и полностью игнорирует передаваемый вами FormCollection.Поэтому вам нужно будет смоделировать запрос и добавить значения к этому объекту.Но это большая работа, которая не стоит усилий, и я бы порекомендовал вам лучший способ: вместо использования FormCollection в качестве параметра действия и последующего вызова UpdateModel внутри действия используйте строго типизированный параметр действия:

public ActionResult Foo(SomeViewModel model)
{
    // The model binder will automatically call UpdateModel and populate
    // the model from the request so that you don't need to manually
    // do all this stuff
    ...
}

и в модульном тесте просто передайте нужную модель при вызове действия контроллера.

...