Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Suntikan kebergantungan dalam ujian fungsi Golang

Suntikan kebergantungan dalam ujian fungsi Golang

WBOY
WBOYasal
2024-04-12 16:33:01763semak imbas

Suntikan kebergantungan boleh dilaksanakan dalam perpustakaan pihak ketiga Go through. Adalah disyorkan untuk menggunakan perpustakaan wayar. Mod suntikan kebergantungan membolehkan suntikan kebergantungan dinamik, ujian penyahgandingan dan kod pengeluaran, serta meningkatkan kebolehselenggaraan dan kebolehskalaan ujian. Wire menyediakan penyuntik kebergantungan yang boleh menyuntik kebergantungan olok-olok Contohnya, dalam contoh, kaedah GetCustomer CustomerService diuji dengan menyuntik CustomerRepository olok-olok, dengan itu meningkatkan kualiti ujian.

Golang 函数测试中的依赖注入

Suntikan Kebergantungan untuk Ujian Fungsi dalam Go

Pengenalan

Dalam ujian unit, selalunya perlu menyediakan kebergantungan untuk fungsi yang sedang diuji. Pendekatan tradisional adalah untuk meneruskan kebergantungan secara langsung sebagai parameter dalam fungsi yang sedang diuji. Walau bagaimanapun, pendekatan ini akan menggabungkan ujian dengan ketat dengan kod yang sedang diuji, menjadikannya sukar untuk dikekalkan dan dilanjutkan.

Suntikan Kebergantungan

Suntikan Ketergantungan ialah corak reka bentuk yang membolehkan kebergantungan disuntik secara dinamik ke dalam pembina atau kaedah objek pada masa jalan. Menggunakan suntikan kebergantungan boleh memisahkan kod ujian dan pengeluaran, dengan itu meningkatkan kebolehselenggaraan dan kebolehskalaan ujian.

Suntikan kebergantungan dalam Go

Tiada rangka kerja suntikan kebergantungan terbina dalam dalam Go, tetapi ia boleh dicapai dengan bantuan perpustakaan pihak ketiga. Anda disyorkan untuk menggunakan pustaka [wire](https://github.com/google/wire), iaitu perpustakaan suntikan pergantungan ringan yang dibangunkan oleh Google.

Kes praktikal

Andaikan kita mempunyai CustomerService, yang bergantung pada CustomerRepository: CustomerService,它依赖于一个 CustomerRepository

type CustomerService struct {
    repo CustomerRepository
}

func (s *CustomerService) GetCustomer(id int) (*Customer, error) {
    return s.repo.Get(id)
}

要测试 GetCustomer 方法,我们需要为它提供一个模拟的 CustomerRepository

使用 wire 实现

使用 wire,我们可以创建一个依赖注入器,如下所示:

func provideCustomerService(repo CustomerRepository) (*CustomerService, error) {
    return &CustomerService{
        repo: repo,
    }, nil
}

然后,在测试中,我们可以使用 wire 来注入模拟的 CustomerRepositoryrreee

Untuk menguji kaedah GetCustomer, kami Ia perlu disediakan dengan CustomerRepository olok-olok.

🎜Dilaksanakan menggunakan wayar🎜🎜🎜Menggunakan wayar, kita boleh mencipta penyuntik kebergantungan seperti ini: 🎜
func TestGetCustomer(t *testing.T) {
    repo := &fakeCustomerRepository{} // 模拟的 CustomerRepository

    service, err := provideCustomerService(repo)
    if err != nil {
        t.Fatalf("provideCustomerService: %v", err)
    }

    // 测试 CustomerService 的 GetCustomer 方法
}
🎜 Kemudian, dalam ujian, kita boleh menggunakan wayar untuk menyuntik CustomerRepository yang dipermainkan: 🎜rrreee🎜rreee Dengan menggunakan suntikan kebergantungan, kami boleh menyediakan kebergantungan olok-olok untuk ujian tanpa mengubah suai kod yang sedang diuji, sekali gus meningkatkan kebolehselenggaraan dan kebolehskalaan ujian. 🎜

Atas ialah kandungan terperinci Suntikan kebergantungan dalam ujian fungsi Golang. 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