2017-01-05 2 views
0

엄격한 모의를 설정하기 위해 Rhino Mock을 사용하고 있습니다. 특정 조건에서는 이러한 모의 객체에 대해 메소드 호출을 수행 할 수 없습니다. 이것은 엄격한 모의의 expectationexception이 잡힐됩니다내 Rhino 모의 엄격한 모의 기대 예외가 실행중인 메소드에서 발견되었습니다. 어떻게 해결할 수 있습니까?

public void DoSomething() 
{ 
    try { 
     m_Class.Something(); 
    } 
    catch { 
    } 
} 

:

// Arrange 
var myMock = MockRepository.GenerateStrictMock<IMyClass>(); 
var sut = new SUT(myMock); 

// Act 
sut.DoSomething(); 

이제 해봐요은 시도 - 캐치 모든 것을 랩합니다. 내 시험은 통과해서는 안되지만 통과합니다.

myMock.VerifyAllExpectations();을 호출하면 테스트에 실패하지만 결과가 좋지 않았 으면합니다.

이 결과를 얻으려면 어떻게해야합니까?

답변

1

예외를 잡는 catch 블록을 갖는 것은 일반적으로 나쁜 습관입니다.

myMock.AssertWasNotCalled(x => x.Something())

을하지만 그건 가능한 모든에 대한 주장을 설정 필요 : 당신이를 변경할 수없는 경우, 그러나, 당신은 더 명시 적으로 다음과 같이 .AssertWasCalled().AssertWasNotCalled()를 사용하여 멤버에 주장 할 수 있습니다 인터페이스 멤버는 아무것도 호출되지 않았 음을 확인하기를 원하면 지루하고 미래의 멤버를 놓칠 수 있습니다.

불행히도, 단언을위한 예외를 사용하는 것은 RhinoMocks (그리고 NUnit, Moq, NS substitute 등과 같은 대부분의 단위 테스트 프레임 워크)의 근본 원리이기 때문에 테스트 프레임 워크로 전파되기 전에 예외를 잡는 것이 일반적으로 문제가 될 것입니다 .

+0

나는이 질문을 제기하기 전에 클래스에서 try-catch를 제외하고 동의했다. 동료는 그 움직임에 동의하지 않았다. 나는 그 움직임이 나보다 더 많은 사람들에게 의미가 있음을 확신한다. – Diana

관련 문제