Beheben von NullReferenceException-Problemen beim Mocking von HttpContext.Current.Session in Unit-Tests
Unit-Tests von Webdiensten, die auf HttpContext.Current.Session
basieren, führen häufig zu NullReferenceException
Fehlern. Dieser Artikel stellt eine Lösung zum Initialisieren der Sitzung innerhalb Ihrer Unit-Tests vor.
Um die ASP.NET-Laufzeitumgebung während des Tests zu simulieren, erstellen wir ein Scheinobjekt HttpContext
, das das Sitzungsverhalten repliziert. Dazu gehört das Erstellen eines simulierten HttpRequest
, eines StringWriter
für die HTTP-Antwort und das anschließende Zusammenstellen eines HttpContext
unter Verwendung dieser Komponenten.
Anschließend muss ein Sitzungscontainer erstellt und mit AddHttpSessionStateToContext
initialisiert werden. Dies ahmt den Sitzungsverwaltungsprozess einer echten Webanfrage nach.
Durch die Zuweisung dieses Scheinkontexts zu HttpContext.Current
können unsere Komponententests auf die Sitzung zugreifen, als ob sie in der Webanwendung ausgeführt würde. Dies ermöglicht das Festlegen von Sitzungswerten, ohne auf das NullReferenceException
:
<code class="language-csharp">HttpContext.Current = MockHelper.FakeHttpContext(); HttpContext.Current.Session["CustomerId"] = "customer1"; HttpContext.Current.Session["CustomerUrl"] = "customer1Url";</code>
Diese Methode ermöglicht ein gründliches Testen des Codes, der mit HttpContext.Current.Session
interagiert, und gewährleistet so ein robustes Testen Ihrer Webdienste.
Das obige ist der detaillierte Inhalt vonWie vermeide ich eine NullReferenceException, wenn HttpContext.Current.Session in Unit-Tests verspottet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!