Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengejek HttpClient dengan berkesan dalam Ujian Unit?
Ejek HttpClient dalam ujian unit
Latar belakang
Dalam ujian unit, selalunya wajar untuk mengejek kebergantungan luar untuk mengelakkan membuat panggilan sebenar. Ini amat penting untuk menguji kod yang berinteraksi dengan klien HTTP seperti HttpClient.
Soalan
Pertimbangkan struktur kod berikut:
<code>public interface IHttpHandler { HttpClient Client { get; } } public class HttpHandler : IHttpHandler { public HttpClient Client { get { return new HttpClient(); } } }</code>
Dalam kes ini, kelas HttpHandler bergantung pada tika HttpClient dalaman. Untuk membuat ujian olok-olok untuk Sambungan yang bergantung pada IHttpHandler, anda perlu mengejek pergantungan HttpClient.
Penyelesaian: Gunakan HttpMessageHandler
Kelanjutan HttpClient membolehkan suntikan kejadian HttpMessageHandler. Dengan mencipta HttpMessageHandler olok-olok, kami boleh mengawal tingkah laku kebergantungan HttpClient dengan berkesan.
Cara menggunakan Moq
Moq ialah rangka kerja mengejek popular yang menyokong HttpClient mengejek. Begini cara mensimulasikan menggunakan Moq:
Alternatif: MockHttp
Jika anda lebih suka pendekatan yang lebih bersih, anda boleh menggunakan perpustakaan yang dipanggil MockHttp untuk memudahkan HttpClient mengejek:
Contoh kod menggunakan 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>
Dengan menggunakan ejekan HttpMessageHandler, anda boleh mengasingkan gelagat kebergantungan HttpClient dengan berkesan dalam ujian unit anda, memastikan ujian anda berjalan secara bebas daripada faktor luaran.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengejek HttpClient dengan berkesan dalam Ujian Unit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!