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.
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 来注入模拟的 CustomerRepository
rreee
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 方法 }
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!