Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengejek Kaedah http.Client Do untuk Pengujian dengan Berkesan?

Bagaimanakah Saya Boleh Mengejek Kaedah http.Client Do untuk Pengujian dengan Berkesan?

Barbara Streisand
Barbara Streisandasal
2024-12-10 10:39:11385semak imbas

How Can I Effectively Mock the http.Client Do Method for Testing?

Mengejek Kaedah http.Client Do

Dalam kod anda, anda cuba mengejek kaedah http.Client Do untuk tujuan ujian . Memandangkan antara muka HttpClient yang anda takrifkan hanya memerlukan fungsi yang sepadan dengan tandatangan Do, anda boleh menggunakan objek olok-olok untuk memenuhi keperluan ini.

Pertimbangkan untuk mencipta struktur ClientMock:

type ClientMock struct {}

Laksanakan Lakukan kaedah dalam struct olok-olok ini seperti berikut:

func (c *ClientMock) Do(req *http.Request) (*http.Response, error) {
    return &http.Response{}, nil
}

ClientMock ini secara berkesan mensimulasikan Tingkah laku HttpClient dengan mengembalikan http.Response tiruan dan tiada ralat.

Untuk menggunakan objek olok-olok ini, masukkan contoh ClientMock ke dalam fungsi GetOverview anda sebagai parameter klien. Ini membolehkan anda mengawal respons HTTP yang dikembalikan oleh objek olok-olok, membolehkan anda mensimulasikan senario yang berbeza semasa ujian.

Satu pendekatan alternatif ialah menggunakan perpustakaan mengejek. Walau bagaimanapun, seperti yang anda nyatakan, banyak perpustakaan tidak menyediakan olok-olok untuk kaedah Do secara eksplisit. Anda boleh mempertimbangkan untuk membungkus http.Client dalam jenis tersuai dan memberikan olok-olok untuk jenis itu.

Akhirnya, pilihan strategi mengejek anda bergantung pada keperluan dan pilihan ujian khusus anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Kaedah http.Client Do untuk Pengujian dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn