Преобразовать строки проверки состояния модели в массив объектов - PullRequest
0 голосов
/ 21 января 2010

Все еще не комфортно со всеми перечисляемыми там. Я пытаюсь сделать это:

 Assert.IsTrue(actionResult.ViewData.ModelState.IsValid, null, Enumerable.ToArray<object>(actionResult.ViewData.ModelState as IEnumerable<object>));

Это утверждение mbUnit со следующей подписью.

public static void IsTrue(bool actualValue, string messageFormat, params object[] messageArgs);

Третий параметр вызывает (перевод на английский)

System.ArgumentNullException: значение не может быть нулевым. Имя параметра: источник в System.Linq.Enumerable.ToArray [TSource] (источник IEnumerable`1) в Coin.UnitTests.AccountControllerTests.MyTest () в D: ... \ Tests \ MbUnitTests \ ControllerTests.cs: строка 85

в Галлио. Как ты это делаешь?

Кстати, кто-нибудь знает, как получить эти сообщения на английском языке? Vista на шведском языке.

1 Ответ

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

ModelState не реализует IEnumerable<T>, поэтому приведение оказывается нулевым, а Enumerable.ToArray() не любит нули, следовательно, исключение.

Попробуйте что-то вроде этого:

var errors = actionResult.ViewData.ModelState.Errors.Select(e => e.ErrorMessage).ToArray();
Assert.IsTrue(actionResult.ViewData.ModelState.IsValid, string.Join("\n", errors));
...