코드가이 문제를 내 가난한 제목보다 잘 설명한다고 생각합니다.동일한 객체를 두 번 스터 빙하면 RhinoMocks가 실패합니까?
_httpContextBase
은 HttpContextBase
이지만 그 점은 상상할 수 없습니다. _httpCookiecollection
그냥 HttpCookieCollection
//Works fine
_httpContextBase.Stub(c => c.Response.Cookies).Return(_httpCookieCollection);
//Fails after attempting to stub the second line. "Object reference not set to an instance of an object". First line passes fine.
_httpContextBase.Stub(c => c.Response.Cookies).Return(_httpCookieCollection);
_httpContextBase.Stub(c => c.Request.Cookies).Return(_httpCookieCollection);
//Work around
var responseBaseMock = MockRepository.GenerateMock<HttpResponseBase>();
responseBaseMock.Stub(r => r.Cookies).Return(_httpCookieCollection);
_httpContextBase.Stub(c => c.Response).Return(responseBaseMock);
var requestBaseMock = MockRepository.GenerateMock<HttpRequestBase>();
requestBaseMock.Stub(r => r.Cookies).Return(_httpCookieCollection);
_httpContextBase.Stub(c => c.Request).Return(requestBaseMock);
가 위의 테스트는 각각 자신의 방법입니다 상상이다. 각 주석은 그 아래의 코드가 실행될 때 어떤 일이 발생하는지 설명합니다.
첫 번째 항목은 작동하고 두 번째 항목은 실패하고 세 번째 항목은 내 해결 방법입니다. 내가 알고 싶은 것은 왜 그것을 이해할 수없는 것처럼 두 번째 항목이 실패하는지입니다. 항목 2에 대한
스택 추적 (라인 1과 2가 반전되는 경우에도 동일한 스택 추적)
System.NullReferenceException : Object reference not set to an instance of an object.
at Api.Tests.Client.CookieTests.<>c.<Test>b__12_1(HttpContextBase c) in Api.Tests\Client\CookieTests.cs:line 113
at Rhino.Mocks.RhinoMocksExtensions.Expect[T,R](T mock, Function`2 action)
at Rhino.Mocks.RhinoMocksExtensions.Stub[T,R](T mock, Function`2 action)
at .Api.Tests.Client.CookieTests.Test() in .Api.Tests\Client\CookieTests.cs:line 113
이 질문에 Windsor를 사용하지는 않지만 대신 RhinoMocks를 사용하여 질문의 제목을 잘못 지정 했습니까? 또한 예외의 스택 추적을 포함하는 것이 좋습니다. –
@JonathonRossi 오 ... 물론이었습니다. 고마워요 조나단! – Questioning