Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengolok-olok Kaedah Struktur dalam Kes Ujian Go Tanpa Antara Muka?

Bagaimana untuk Mengolok-olok Kaedah Struktur dalam Kes Ujian Go Tanpa Antara Muka?

DDD
Lepaskan: 2024-12-20 17:52:10
asal
684 orang telah melayarinya

How to Mock Struct Methods in Go Test Cases Without Interfaces?

Kaedah Struktur Mengejek dalam Kes Ujian Go

Dalam Go, panggilan kaedah mengejek sesuatu struct boleh dicapai tanpa memasukkan antara muka ke dalam kod sumber . Begini caranya:

Mengejek Struktur dan Kaedah Contoh

Pertimbangkan struct dan kaedah berikut:

type A struct {}

func (a *A) perfom(string){
...
...
..
}
Salin selepas log masuk

Mengejek dalam Kes Ujian

Untuk mengejek kaedah pelaksanaan untuk ujian kes:

  1. Buat Antara Muka Olok-olok: Tentukan antara muka yang mewakili kaedah untuk dipermainkan.
type Performer interface {
    perform(string)
}
Salin selepas log masuk
  1. Buat Olok-olok dan Pelaksanaan Sebenar: Laksanakan antara muka untuk kedua-dua olok-olok dan pelaksanaan sebenar struct.
type AMock struct {}

func (a *AMock) perform(string) {
    // Mocked behavior
}

type A struct {}

func (a *A) perform(string) {
    // Real implementation
}
Salin selepas log masuk
  1. Gunakan Suntikan Ketergantungan: Lulus pelaksanaan yang dipermainkan atau sebenar sebagai hujah kepada fungsi yang sedang diuji.
func invoke(url string, p Performer) {
    out := p.perfom(url)
    ...
    ...
}
Salin selepas log masuk
  1. Suntikan Mock dalam Ujian: Dalam kes ujian anda, suntikan pelaksanaan olok-olok ke dalam fungsi invoke.
func TestInvokeWithMock(t *testing.T) {
    var amok = &AMock{}
    invoke("url", amok)
    // Verify mock behavior (e.g., assert it was called with the correct argument)
}
Salin selepas log masuk
  1. Inject Pelaksanaan Nyata dalam Kod Pengeluaran: Dalam kod pengeluaran anda, masukkan pelaksanaan sebenar struct ke dalam invoke fungsi.
func TestInvokeWithReal(t *testing.T) {
    var a = &A{}
    invoke("url", a)
    // No need for verification since it's the real implementation
}
Salin selepas log masuk

Lain-lain Pilihan

Perpustakaan seperti [testify/mock](https://godoc.org/github.com/stretchr/testify/mock) menyediakan keupayaan mengejek yang lebih mantap, membolehkan anda mengawal tingkah laku olok-olok dan sahkan panggilan kaedah.

Atas ialah kandungan terperinci Bagaimana untuk Mengolok-olok Kaedah Struktur dalam Kes Ujian Go Tanpa Antara Muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan