2011-11-15 2 views
2

ID 목록을 통해 루프가 지정된 ID를 찾지 못하는 경우 사용자 지정 예외를 throw하는 컨트롤러 메서드가 있습니다. 그렇지 않으면 부분 뷰가 반환됩니다.Moq - 컨트롤러 메서드가 예외를 throw하는 테스트

부분 뷰를 성공적으로 반환했는지 테스트했지만 메서드가 실패하고 사용자 지정 예외가 throw되는지 테스트하려면 어떻게해야합니까?

답변

10

간단한 시도/catch를 수행하고 이 아닌 경우 Assert.Fail을 수행하여이 예상 된 예외를 포착 할 수 있습니다. 그러나 대부분의 단위 테스트 프레임 워크는 예외를 자동으로 테스트합니다.

마이크로 소프트의 MSTEST이 시험 방법에 적용 할 수있는 ExpectedException 속성이 있습니다 시험 방법은 위의 하지이 경우 ArgumentNullException을 던져 않는 경우

[ExpectedException(typeof(ArgumentNullException))] 
[TestMethod] 
public void DoSomething() 
{ ... } 

을 MSTEST은 실패로 테스트를 표시합니다.

NUnit에는 테스트 메서드에서 예외가 예상되는 위치를 정확하게 제어 할 수 있도록보다 세분화 된 Assert.Throws이 있습니다.

+0

나는 항상 Assert.Throws() MS 테스트에서 나를 수 없다는 것을 화나게했다. 내 해결책은 예외 유형에 대한 일반 매개 변수를 사용하는 ExtendedAssert 라이브러리를 작성하는 것이 었습니다. –

+0

Patrick 대단히 감사합니다. –

관련 문제