我正在尝试在我的MVC应用程序上运行一些测试,但是我一直在经历一个让它运行起来的世界.我会尽力做到这一点:
我正在使用RhinoMocks尝试这样的事情:
建立:
MockRepository mocks = new MockRepository(); HttpContextBase _mockContext = mocks.FakeHttpContext(); mocks.SetFakeControllerContext(new LoginController()); HttpApplicationStateBase appState = MockRepository.GenerateStub(); _mockContext.Expect(mc => mc.Application).Return(appState); HttpContext.Current = _mockContext.ApplicationInstance.Context;
这是FakeHttpContext()
方法:
public static HttpContextBase FakeHttpContext(this MockRepository mocks) { HttpApplication app = mocks.PartialMock(); HttpContextBase context = mocks.PartialMock (); HttpRequestBase request = mocks.PartialMock (); HttpResponseBase response = mocks.PartialMock (); HttpSessionStateBase session = mocks.PartialMock (); HttpServerUtilityBase server = mocks.PartialMock (); SetupResult.For(context.ApplicationInstance).Return(app); SetupResult.For(context.Request).Return(request); SetupResult.For(context.Response).Return(response); SetupResult.For(context.Session).Return(session); SetupResult.For(context.Server).Return(server); mocks.Replay(context); return context; }
我真的需要访问,HttpContextBase.Request.AppRelativeCurrentExecutionFilePath
但它总是返回null
.同样的道理HttpContext.Current.Request.RequestContext
.
有人可以帮帮我吗?可以肯定地说,我现在绝望了.