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

3 番目のパラメーターの原因 (英語に翻訳)

System.ArgumentNullException: 値を null にすることはできません。パラメータ名: 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>ため、キャストは null になり、null を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 に答える