Модульное тестирование TryUpdateModel в MVC 2 RC неловкое поведение - PullRequest
1 голос
/ 08 января 2010

Перед использованием MVC 2 RC я использовал MVC 1, код, который я использовал для обновления моего объекта в моем контроллере, был таким:

TryUpdateModel(entity, null, null, new[] { "Name", "Controller" });

Я смог провести модульное тестирование этого действия контроллера, просто используя это в моем тесте:

controller.ValueProvider = myFormCollection.ToValueProvider();

После переноса моего кода в MVC 2 это больше не работает. Он продолжает давать сбой в реализации метода GetValue в FormCollection, потому что он проверяет, что запрашиваемое вами значение не является нулевым или пустым. Дело в том, что этот код работает во время выполнения, но не в моем модульном тесте. Я не использую префикс, поэтому отправляю NULL в качестве значения префикса.

Я посмотрел исходный код MVC 2 RC, и первое значение, которое ищет ValueProvider контроллера - это префикс, поэтому он ужасно терпит неудачу. Какой провайдер мне нужно назначить для controller.ValueProvider, чтобы он мог работать в моем модульном тесте?

Редактировать : Если очень кратко спросить, как я скажу TryUpdateModel НЕ использовать префикс в моем модульном тесте, чтобы он не вызывал исключения?

Спасибо!

1 Ответ

2 голосов
/ 08 января 2010

Известная ошибка в MVC 2 RC, будет исправлена ​​для следующей капли.

Из отдельного электронного письма по этому вопросу:

Кстати, при юнит-тестировании ты может захотеть использовать Тип SimpleValueProvider. (Может быть найден в модульном тестовом проекте MVC, так Вы можете скопировать его в свой собственный проект, если Вы хотите.) Это буквально просто Словарь, который также реализует IValueProvider. Это будет быть более полезным, если вы хотите хранить значения типа {"foo", 42}, а не {"foo", "42"} для модульного тестирования.

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