저는 Mocking 프레임 워크에 익숙하지 않고 RhinoMock을 사용하여 MVC App Unit Testing을 지원하기 시작했습니다.Rhino Mock을 사용하여 HttpContext.Application을 모의 사용하는 방법
나는 Scott Hanselmanns MVC Mock Helper을 사용하여 HttpContext를 조롱합니다. HttpContext의 Application 속성에 대해 필자는 (시간이 지나면) 필자가 필요로하는 것을 조롱했으나 멈추게되었습니다. 내 응용 프로그램에서
나는 응용 프로그램에서 개체를 저장하고 같은 컨트롤러 내에서 검색 :
이 내 MVC 응용 프로그램에서 위해 Application_Start에 생성됩니다SomeObj foo = (SomeObj)Application["fooKey"];
.
테스트 설정에서 현재 첫 번째 대답 (명확성을 위해 추가 코드) 업데이트 된 다음 내가 할 내 단위 테스트 설정에서
HttpContextBase mockHttpBase = mocks.FakeHttpContext();
controllerToTest = new SomeController();
mocks.SetFakeControllerContext(controllerToTest);
HttpApplicationStateBase appState =
MockRepository.GenerateStub<HttpApplicationStateBase>();
Globals tmpAppGlobals =
new Globals();
mockHttpBase.Expect(ctx => ctx.Application).Return(appState);
mockHttpBase.Expect(ctx => ctx.Application[Globals.GlobalsKey]).
Return(tmpAppGlobals);
내가 할 :
이
Globals tmpAppGlobals = new Globals();
controllerToTest.ControllerContext.HttpContext.
Expect(ctx => ctx.Application[Globals.GlobalsKey]).
Return(tmpAppGlobals);
이 호출이 발생합니다 Application 개체에 대한 NullReference 예외입니다.
내 질문은 두 배 :
1)이 올바른 접근 아니면 내가 디자인/아키텍처 관점에서 잘못을했을가요?
2) 왜 작동하지 않습니까?!
미리 감사드립니다.
내 대답을 편집했습니다. 그것을 확인하고 그것이 작동하는지 확인 – Randolpho