Nadal nie jest wygodne ze wszystkimi wymienionymi artykułami. Próbuję to zrobić:
Assert.IsTrue(actionResult.ViewData.ModelState.IsValid, null, Enumerable.ToArray<object>(actionResult.ViewData.ModelState as IEnumerable<object>));
Jest to asercja mbUnit z następującym podpisem.
public static void IsTrue(bool actualValue, string messageFormat, params object[] messageArgs);
Przyczyny trzeciego parametru (przetłumaczone na angielski)
System.ArgumentNullException: Wartość nie może mieć wartości NULL. Nazwa parametru: źródło w System.Linq.Enumerable.ToArray [TSource] (źródło IEnumerable`1) w Coin.UnitTests.AccountControllerTests.MyTest () w D: ... TestsMbUnitTestsControllerTests.cs: wiersz 85
w Gallio. Jak ty to robisz?
Przy okazji, czy ktoś wie jak zdobyć te wiadomości po angielsku? Vista jest po szwedzku.
Odpowiedzi:
2 dla odpowiedzi № 1ModelState
nie implementuje IEnumerable<T>
więc obsada kończy się na zerowym i Enumerable.ToArray()
nie lubi zer, stąd wyjątek.
Spróbuj czegoś takiego:
var errors = actionResult.ViewData.ModelState.Errors.Select(e => e.ErrorMessage).ToArray();
Assert.IsTrue(actionResult.ViewData.ModelState.IsValid, string.Join("n", errors));