Strukturmethoden in Go-Testfällen verspotten
In Go können Methodenaufrufe einer Struktur verspottet werden, ohne Schnittstellen in den Quellcode einzuführen . So geht's:
Verspotten einer Beispielstruktur und -methode
Betrachten Sie die folgende Struktur und Methode:
type A struct {} func (a *A) perfom(string){ ... ... .. }
Verspotten in Testfällen
Um die Perform-Methode für Tests zu verspotten Fälle:
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 }
Andere Optionen
Bibliotheken wie [testify/mock](https://godoc.org/github.com/stretchr/testify/mock) bieten noch robustere Mocking-Funktionen, mit denen Sie das Mock-Verhalten steuern können Methodenaufrufe überprüfen.
Das obige ist der detaillierte Inhalt vonWie verspotte ich Strukturmethoden in Go-Testfällen ohne Schnittstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!