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){ ... ... .. }
Mengejek dalam Kes Ujian
Untuk mengejek kaedah pelaksanaan untuk ujian kes:
type Performer interface { perform(string) }
type AMock struct {} func (a *AMock) perform(string) { // Mocked behavior } type A struct {} func (a *A) perform(string) { // Real implementation }
func invoke(url string, p Performer) { out := p.perfom(url) ... ... }
func TestInvokeWithMock(t *testing.T) { var amok = &AMock{} invoke("url", amok) // Verify mock behavior (e.g., assert it was called with the correct argument) }
func TestInvokeWithReal(t *testing.T) { var a = &A{} invoke("url", a) // No need for verification since it's the real implementation }
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!