Ich versuche, einige Tests auf meiner MVC-Anwendung auszuführen, aber ich habe eine Welt von Schwierigkeiten erlebt, es zur Arbeit zu bringen. Ich werde versuchen, es auf den Punkt zu bringen:Wie man HttpApplication/HttpContext zum Testen vortäuscht oder vortäuscht
ich RhinoMocks bin mit so etwas versuchen:
Setup:
MockRepository mocks = new MockRepository();
HttpContextBase _mockContext = mocks.FakeHttpContext();
mocks.SetFakeControllerContext(new LoginController());
HttpApplicationStateBase appState = MockRepository.GenerateStub<HttpApplicationStateBase>();
_mockContext.Expect(mc => mc.Application).Return(appState);
HttpContext.Current = _mockContext.ApplicationInstance.Context;
Hier ist die FakeHttpContext()
Methode:
public static HttpContextBase FakeHttpContext(this MockRepository mocks)
{
HttpApplication app = mocks.PartialMock<HttpApplication>();
HttpContextBase context = mocks.PartialMock<HttpContextBase>();
HttpRequestBase request = mocks.PartialMock<HttpRequestBase>();
HttpResponseBase response = mocks.PartialMock<HttpResponseBase>();
HttpSessionStateBase session = mocks.PartialMock<HttpSessionStateBase>();
HttpServerUtilityBase server = mocks.PartialMock<HttpServerUtilityBase>();
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;
}
Ich muss wirklich auf HttpContextBase.Request.AppRelativeCurrentExecutionFilePath
zugreifen, aber es wird immer als null
zurückgegeben. Das gleiche gilt für HttpContext.Current.Request.RequestContext
.
Kann mir hier jemand helfen? Es ist sicher zu sagen, dass ich an diesem Punkt verzweifelt bin.
Sie erzähle nicht, was das Problem ist? Erhalten Sie einen Fehler (welcher?)? Soweit ich sehen kann, ist das spezielle Setup 'Setup (c => c.Request.AppRelativeCurrentExecutionFilePath) sollte funktionieren, da 'Request' eine' virtuelle' Eigenschaft eines Typs ist, der selbst eine 'virtuelle' Eigenschaft' AppRelativeCurrentExecutionFilePath' besitzt. Was ist der Grund dafür, '_mockContext.SetupAllProperties();' zu sagen? Wollen Sie auch * andere * Eigenschaften einrichten? –
@JeppeStigNielsen Ich habe meine Frage mit dem was ich gerade benutze aktualisiert. Ich kann es immer noch nicht zur Arbeit bringen. – Kehlan