2010-01-20 8 views
0

아직 모든 enumerables가 만족스럽지 않습니다. 나는 이것을 시도하고있다 :modelstate 유효성 검사 문자열을 객체 배열로 변환하십시오.

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을 (영어 번역) 원인 : 값이 널이 될 수 없다. 매개 변수 이름 : D : ... \ Tests \ MbUnitTests \ ControllerTests.cs의 Coin.UnitTests.AccountControllerTests.MyTest()에서 System.Linq.Enumerable.ToArray [TSource] (IEnumerable`1 source) 의 소스 : row Gallio에서 85

. 어떻게 할 수 있니?

Btw, 누구든지 영어로이 메시지를받는 방법을 알고 있습니까? Vista는 스웨덴어입니다.

답변

2

ModelStateIEnumerable<T>을 구현하지 않으므로 캐스트가 null이되고 Enumerable.ToArray()은 null을 좋아하지 않으므로 예외가됩니다. 그런데 종류의

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

:

는 다음과 같이하십시오. 약간의 피딩 후 나는 이것을 컴파일했다. (다른 버전의 MCV 일 수 있겠는가?) var errors = actionResult.ViewData.ModelState.Values.Select (e => e.Errors.First(). ErrorMessage) .ToArray(); Assert.IsTrue (actionResult.ViewData.ModelState.IsValid, string.Join ("\ n", errors)); 작동합니다. 그것이 더 예쁘게 만들 수 있다면 궁금해? – Martin

관련 문제