2011-10-26 3 views
3

out 매개 변수가있는 메소드가 있는데 예외가 발생할 수 있습니다. 나는 코뿔소 모형이 동작을 테스트 할, 그래서 수행Rhino .OutRef와 호환되지 않습니다.

Expect.Call(() => mymethod(null, null, out integer1, out integer2)) 
       .IgnoreArguments().OutRef(1, 2).Throw(new Exception()); 

을하지만 밖으로 매개 변수가 초기화되기 전에 예외가 발생 꽤 명확하게 나타납니다.

제가 잘못했거나 정상적인 코뿔소 행동입니까? 이 문제를 어떻게 해결할 수 있습니까?

답변

0

아마도 Rhino.Mocks의 버그 일 것입니다. 나는 .Throw() 메서드를 사용하여 "이 메서드를 호출하면이 예외를 throw합니다."라고 생각합니다. 그게 전부입니다 - 예외를 던집니다.

out 변수를 초기화하지 않으려면 코드를 다시 디자인하십시오. 예외가 발생합니다. try/catch 블록에서 메서드를 래핑하고 예외를 catch하면 메서드가 어디에서나 죽을 수 있다고 가정하고 어떤 작업이 수행되었거나 완료되지 않았는지에 대한 가정을하지 않습니다.

코드가 두 가지 방법으로 분할 될 수 있습니까?

+0

글쎄, 필자는 매개 변수가 아직 특정 종류의 예외에 대해 초기화되어 있다고 주장하고 싶었지만, 그 매개 변수에 의존하는 것은 권장되는 동작이 아닙니다. 결국 리팩토링이 해결책입니다. – Zonko

관련 문제