有效的單元測試需要將元件與外部相依性隔離。 本指南示範如何模擬 HttpClient
進行穩健的單元測試,重點在於依賴注入和 Moq 框架。
透過介面使用依賴注入
依賴注入對於可測試性至關重要。它允許您在測試期間使用模擬或存根版本替換依賴項(例如 HttpClient
)。
讓我們考慮一個 IHttpHandler
介面:
<code class="language-csharp">public interface IHttpHandler { HttpClient Client { get; } }</code>
以及具體實作(HttpHandler
):
<code class="language-csharp">public class HttpHandler : IHttpHandler { public HttpClient Client => new HttpClient(); }</code>
建立一個模擬的 HttpClient
要模擬 HttpClient
,請建立一個實作 IHttpHandler
的類,該類會傳回模擬的 HttpClient
。 使用起訂量:
<code class="language-csharp">public class MockedHttpHandler : IHttpHandler { private readonly Mock<HttpClient> _clientMock; public MockedHttpHandler() { _clientMock = new Mock<HttpClient>(); } public HttpClient Client => _clientMock.Object; }</code>
使用模擬處理程序進行單元檢定
在單元測試中,注入 MockedHttpHandler
而不是 HttpHandler
:
<code class="language-csharp">[TestMethod] public void TestMockConnection() { var mockHttp = new MockedHttpHandler(); var connection = new Connection(mockHttp); // Assuming 'Connection' class uses IHttpHandler // Configure expectations for the mocked HttpClient (e.g., _clientMock.Setup(...)) Assert.AreEqual("Test McGee", connection.DoSomething()); // Example assertion }</code>
總結
透過利用依賴注入和模擬框架(如 Moq),您可以有效地將單元測試與外部依賴項(如 HttpClient
)隔離開來,從而能夠集中測試程式碼的核心邏輯。 這種方法促進了更清潔、更可維護和更可靠的單元測試。
以上是如何模擬 HttpClient 進行有效的單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!