0

仍然对那里的所有可枚举项感到不舒服。我正在尝试这样做:

 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:值不能为空。参数名称:Source at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Coin.UnitTests.AccountControllerTests.MyTest() in D:...\Tests\MbUnitTests\ControllerTests.cs:row 85

在加里奥。你怎么做呢?

顺便说一句,有人知道如何用英语获取这些信息吗?Vista 是瑞典语。

4

1 回答 1

3

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));
于 2010-01-20T23:36:02.687 回答