2011-09-08 3 views
5

내 문제는 다음과 같습니다 :Rhino Mock 대 디버그 모드?

mvc 라우팅 테스트에 대해 stubbed http 컨텍스트를 사용하는 ms 단위 테스트가 있습니다. 그러나 코드 (코뿔소 모형을 사용하는)의 한 부분은 문제가있다 :

enter image description here

왜 이런 오류가 발생합니다 디버그 모드에서

var httpContextMock = MockRepository.GenerateStub<HttpContextBase>(); 
httpContextMock.Stub(c => c.Request.AppRelativeCurrentExecutionFilePath) 
    .Return(url); 

는 두 번째 줄은 예외를 throw? 테스트가 디버거없이 실행되는 동안 모든 것이 잘 동작합니다.

감사합니다.

+0

스텁 된 동작이 올바르게 호출 되나요? 올바른 값을 반환합니까? –

+0

디버그 모드에서 예외 때문에 확인할 수 없습니다. 디버그 모드가 없으면 코드가 정상적으로 작동하는 것 같습니다. File.AppendAllText (@ "c : \ debug.txt", httpContextMock.Request.AppRelativeCurrentExecutionFilePath)는 올바른 스텁 값을 파일에 씁니다. – jwaliszko

+2

이상한. 그 오류를 제공하고 작동하지 않거나 오류를주지 않을 것으로 예상됩니다. –

답변

1

정말 이상합니다. 이상한 점은 코드가 비 디버그 모드에서 작동한다는 것입니다. Request 속성은 스텁되지 않으므로 반환 할 내용을 실제로 알 수 없습니다. 나뿐만 아니라 내이 문제가 발생했다

var httpContextMock = MockRepository.GenerateStub<HttpContextBase>(); 
var httpRequestMock = MockRepository.GenerateStub<HttpContextBase>(); 
httpContextMock.Stub(c => c.Request).Return(httpRequestMock); 
httpRequestMock.Stub(c => c.AppRelativeCurrentExecutionFilePath).Return(url); 
0

및 솔루션의 .suo 파일을 삭제하여 고정 : 다음을 시도 할 수 있습니다. (-> 예외 디버그 메뉴)

enter image description here

0

문제는 스텁 방법입니다 suo 파일에 저장되어있는 Break when Common Language Runtime Exception is thrown 설정을 전환 할 때

는 또한 다른 예외를 얻을 것으로 보인다. .Return() 만 사용하면이 값을 다시 으로 되돌릴 수 있습니다. 스텁이 값을 반환해야하는 횟수를 신경 쓰지 않는다면 .Return().Repeat.Any()을 사용해야합니다.

관련 문제