Rumah pembangunan bahagian belakang Golang Suntikan kebergantungan dalam ujian fungsi Golang

Suntikan kebergantungan dalam ujian fungsi Golang

Apr 12, 2024 pm 04:33 PM
git golang suntikan pergantungan

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)
}
Salin selepas log masuk

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

使用 wire 实现

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

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

然后,在测试中,我们可以使用 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 方法
}
Salin selepas log masuk
🎜 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 Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Memasang DeepSeek Cara Memasang DeepSeek Feb 19, 2025 pm 05:48 PM

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.

Ringkasan Soalan Lazim untuk Penggunaan DeepSeek Ringkasan Soalan Lazim untuk Penggunaan DeepSeek Feb 19, 2025 pm 03:45 PM

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

Bagaimana untuk mendaftar untuk LBank Exchange? Bagaimana untuk mendaftar untuk LBank Exchange? Aug 21, 2024 pm 02:20 PM

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".

Apakah alat AI? Apakah alat AI? Nov 29, 2024 am 11:11 AM

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

Sebagai pembuat pasaran teratas memasuki pasaran crypto, apakah impak yang akan dimiliki oleh Castle Securities terhadap industri ini? Sebagai pembuat pasaran teratas memasuki pasaran crypto, apakah impak yang akan dimiliki oleh Castle Securities terhadap industri ini? Mar 04, 2025 pm 08:03 PM

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

Apakah Dana Amanah Penyulitan Kelabu? Apakah Dana Amanah Penyulitan Kelabu? Mar 05, 2025 pm 12:33 PM

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,

Delphi Digital: Bagaimana Mengubah Ekonomi AI Baru Dengan Mengurangkan Senibina Elizaos V2 Baru? Delphi Digital: Bagaimana Mengubah Ekonomi AI Baru Dengan Mengurangkan Senibina Elizaos V2 Baru? Mar 04, 2025 pm 07:00 PM

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

Melampaui SFT, rahsia di belakang O1/DeepSeek-R1 juga boleh digunakan dalam model besar multimodal Melampaui SFT, rahsia di belakang O1/DeepSeek-R1 juga boleh digunakan dalam model besar multimodal Mar 12, 2025 pm 01:03 PM

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

See all articles