Suntikan kebergantungan dalam ujian fungsi Golang
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Terdapat banyak cara untuk memasang DeepSeek, termasuk: Menyusun dari Sumber (untuk pemaju berpengalaman) menggunakan pakej yang dikompilasi (untuk pengguna Windows) menggunakan bekas docker (untuk yang paling mudah, tidak perlu bimbang tentang keserasian) Dokumen rasmi dengan berhati -hati dan menyediakannya sepenuhnya untuk mengelakkan masalah yang tidak perlu.

Panduan Pengguna Alat DeepSeekai dan FAQ DeepSeek adalah alat pintar AI yang kuat. FAQ: Perbezaan antara kaedah akses yang berbeza: Tidak ada perbezaan fungsi antara versi web, versi aplikasi dan panggilan API, dan aplikasi hanya pembungkus untuk versi web. Penggunaan tempatan menggunakan model penyulingan, yang sedikit lebih rendah daripada versi penuh DeepSeek-R1, tetapi model 32-bit secara teorinya mempunyai keupayaan versi penuh 90%. Apa itu bar? Sillytavern adalah antara muka depan yang memerlukan memanggil model AI melalui API atau Ollama. Apa itu Had Breaking

Untuk mendaftar untuk LBank layari laman web rasmi dan klik "Daftar". Masukkan e-mel dan kata laluan anda dan sahkan e-mel anda. Muat turun apl LBank iOS: Cari "LBank" dalam AppStore. Muat turun dan pasang aplikasi "LBank-DigitalAssetExchange". Android: Cari "LBank" di Gedung Google Play. Muat turun dan pasang aplikasi "LBank-DigitalAssetExchange".

Alat AI termasuk: Doubao, ChatGPT, Gemini, BlenderBot, dll.

Kemasukan pembuat pasaran Castle Securities ke dalam pembuat pasaran Bitcoin adalah simbol kematangan pasaran Bitcoin dan langkah utama bagi pasukan kewangan tradisional untuk bersaing untuk kuasa harga aset masa depan. Pada 25 Februari, menurut Bloomberg, Citadel Securities berusaha untuk menjadi penyedia kecairan untuk kriptografi. Syarikat itu bertujuan untuk menyertai senarai pembuat pasaran di pelbagai bursa, termasuk pertukaran yang dikendalikan oleh Coinbaseglobal, Binanceholdings dan Crypto.com, orang yang biasa dengan perkara itu berkata. Setelah diluluskan oleh pertukaran, syarikat itu pada mulanya merancang untuk menubuhkan pasukan pembuat pasaran di luar Amerika Syarikat. Langkah ini bukan hanya tanda

Pelaburan Grayscale: Saluran untuk pelabur institusi untuk memasuki pasaran cryptocurrency. Syarikat itu telah melancarkan beberapa amanah crypto, yang telah menarik perhatian pasaran yang meluas, tetapi kesan dana ini pada harga token berbeza dengan ketara. Artikel ini akan memperkenalkan secara terperinci beberapa dana amanah utama Grayscale. Dana Grayscale Major Crypto Trust yang boleh didapati dengan sekilas Pelaburan Grayscale (yang diasaskan oleh DigitalCurrencyGroup pada tahun 2013) menguruskan pelbagai dana amanah aset crypto, menyediakan pelabur institusi dan individu yang bernilai tinggi dengan saluran pelaburan yang mematuhi. Dana utamanya termasuk: Zcash (Zec), Sol,

ELIZAOSV2: Memperkasakan AI dan memimpin ekonomi baru Web3. Artikel ini akan menyelam ke dalam inovasi utama ElizaOSv2 dan bagaimana ia membentuk ekonomi masa depan yang didorong oleh AI. AIT Automasi: Pergi secara bebas mengendalikan Elizaos pada asalnya merupakan rangka kerja AI yang memberi tumpuan kepada automasi Web3. Versi V1 membolehkan AI berinteraksi dengan kontrak pintar dan data blockchain, manakala versi V2 mencapai peningkatan prestasi yang signifikan. Daripada hanya melaksanakan arahan mudah, AI secara bebas dapat menguruskan aliran kerja, mengendalikan perniagaan dan membangunkan strategi kewangan. Peningkatan Seni Bina: Ditingkatkan a

Penyelidik dari Universiti Shanghai Jiaoto, Shanghai Ailab dan Universiti Cina Hong Kong telah melancarkan projek sumber terbuka Visual-RFT (Visual Fine Fine Tuning), yang hanya memerlukan sedikit data untuk meningkatkan prestasi model bahasa besar visual (LVLM). Visual-RFT bijak menggabungkan pendekatan pembelajaran tetulang berasaskan peraturan DeepSeek-R1 dengan paradigma penalaan Fine-Penalaan Terbuka (RFT) OpenAI, berjaya memperluaskan pendekatan ini dari medan teks ke medan visual. Dengan merancang ganjaran peraturan yang sepadan untuk tugas-tugas seperti subkategori visual dan pengesanan objek, Visual-RFT mengatasi batasan kaedah DeepSeek-R1 yang terhad kepada teks, penalaran matematik dan bidang lain, menyediakan cara baru untuk latihan LVLM. Vis
