단위 테스트에서 모의 HttpClient
배경
단위 테스트에서는 실제 호출을 피하기 위해 외부 종속성을 모의하는 것이 바람직한 경우가 많습니다. 이는 HttpClient와 같은 HTTP 클라이언트와 상호 작용하는 코드를 테스트하는 데 특히 중요합니다.
질문
다음 코드 구조를 고려하세요.
<code>public interface IHttpHandler { HttpClient Client { get; } } public class HttpHandler : IHttpHandler { public HttpClient Client { get { return new HttpClient(); } } }</code>
이 경우 HttpHandler 클래스는 내부 HttpClient 인스턴스에 의존합니다. IHttpHandler에 의존하는 연결에 대한 모의 테스트를 만들려면 HttpClient 종속성을 모의해야 합니다.
해결책: HttpMessageHandler 사용
HttpClient의 확장성은 HttpMessageHandler 인스턴스 삽입을 허용합니다. 모의 HttpMessageHandler를 생성함으로써 우리는 HttpClient 종속성의 동작을 효과적으로 제어할 수 있습니다.
Moq 사용방법
Moq는 HttpClient 모의를 지원하는 인기 있는 모의 프레임워크입니다. Moq를 사용하여 시뮬레이션하는 방법은 다음과 같습니다.
대안: MockHttp
더 깔끔한 접근 방식을 선호한다면 MockHttp라는 라이브러리를 사용하여 HttpClient 모의 작업을 단순화할 수 있습니다.
MockHttp를 사용한 코드 예시
<code>var mockHttp = new MockHttpMessageHandler(); mockHttp.When("http://localhost/api/user/*") .Respond("application/json", "{'name' : 'Test McGee'}"); var client = new HttpClient(mockHttp); var response = await client.GetAsync("http://localhost/api/user/1234"); var json = await response.Content.ReadAsStringAsync(); Console.Write(json); // {'name' : 'Test McGee'}</code>
HttpMessageHandler 모의를 사용하면 단위 테스트에서 HttpClient 종속성 동작을 효과적으로 격리하여 테스트가 외부 요인과 독립적으로 실행되도록 할 수 있습니다.
위 내용은 단위 테스트에서 HttpClient를 효과적으로 모의하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!