단위 테스트에서 모의 HttpClient
단위 테스트에서는 대상 코드의 동작을 격리하기 위해 외부 종속성을 모의하는 것이 일반적입니다. Mock HttpClient를 사용하면 실제 네트워크 호출 없이 HTTP 요청에 의존하는 코드를 테스트할 수 있습니다.
다음 시나리오를 고려해보세요.
<code class="language-csharp">public interface IHttpHandler { HttpClient Client { get; } } public class HttpHandler : IHttpHandler { public HttpClient Client => new HttpClient(); } public class Connection { private readonly IHttpHandler _httpClient; public Connection(IHttpHandler httpClient) { _httpClient = httpClient; } public void DoSomething() { /* 使用 _httpClient.Client 进行 HTTP 调用 */ } }</code>
단위 테스트 프로젝트에서는 네트워크 호출을 피하고 연결 클래스의 논리를 테스트하는 데 집중하기 위해 HttpClient를 모의할 수 있습니다.
<code class="language-csharp">private IHttpHandler _httpClient; [TestMethod] public void TestMockConnection() { //此处需要创建 HttpClient 的模拟实例,而不是真实的实例 var connection = new Connection(_httpClient); connection.DoSomething(); }</code>
이를 위해 종속성 주입을 사용하여 모의 HttpClient를 주입할 수 있습니다. HttpClient의 확장성은 생성자에 전달되는 HttpMessageHandler에 있습니다. 단위 테스트에서 모의 HttpMessageHandler를 생성하고 이를 HttpClient 생성자에 전달할 수 있습니다.
<code class="language-csharp">[TestMethod] public void TestMockConnection() { var mockHttp = new MockHttpMessageHandler(); // 创建一个模拟 HttpMessageHandler var httpClient = new HttpClient(mockHttp); // 将模拟 HttpMessageHandler 传递给 HttpClient 构造函数 var connection = new Connection(new HttpHandler { Client = httpClient }); // 将模拟 HttpClient 注入 Connection 类 connection.DoSomething(); // 通过对模拟 HttpMessageHandler 设置期望来验证是否进行了预期的 HTTP 请求。 }</code>
종속성 주입을 사용하고 HttpMessageHandler를 모의하면 실제 네트워크를 호출하지 않고도 테스트 중인 코드를 효과적으로 격리하고 해당 동작을 확인할 수 있습니다.
위 내용은 효과적인 단위 테스트를 위해 HttpClient를 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!