Heim >Backend-Entwicklung >Golang >Wie verspotte ich Strukturmethodenaufrufe in Go-Tests, ohne Schnittstellen zu verwenden?

Wie verspotte ich Strukturmethodenaufrufe in Go-Tests, ohne Schnittstellen zu verwenden?

DDD
DDDOriginal
2024-12-08 00:09:12735Durchsuche

How to Mock Struct Method Calls in Go Tests Without Using Interfaces?

Mocking-Methodenaufrufe von Strukturen in Go-Testfällen ohne Schnittstellen

In Go gibt es kein direktes Äquivalent zu Frameworks wie Mockito und jMock für Methodenaufrufe von Strukturen verspotten. Es gibt jedoch mehrere Techniken, die eingesetzt werden können, um ein ähnliches Mocking-Niveau zu erreichen, ohne Schnittstellen in den Quellcode einzuführen.

Ein Ansatz besteht darin, eine Mock-Struktur zu erstellen, die dieselben Methoden wie die ursprüngliche Struktur implementiert. Die Scheinstruktur kann dann in die Funktion oder Methode eingefügt werden, die getestet werden muss, sodass Sie das Verhalten steuern und die Aufrufe überprüfen können.

Betrachten Sie das folgende Beispiel:

type A struct {}

func (a *A) perform(url string){
    // ...
} 

func invoke(s A, url string){
    out := s.perform(url)
    // ...
} 

An Wenn Sie den Methodenaufruf von perform verspotten, können Sie eine Scheinstruktur AMock erstellen, die dieselbe Schnittstelle wie A implementiert.

type AMock struct {}

func (a *AMock) perform(url string) {
    // mocked implementation
}

In Ihrem Testfall können Sie den Schein injizieren struct in die Aufruffunktion ein und bestätigen Sie das erwartete Verhalten.

Ein anderer Ansatz besteht darin, ein Dependency-Injection-Framework wie testify/mock zu verwenden. Dieses Framework bietet eine Reihe von Erweiterungsmethoden, mit denen Sie Schnittstellen simulieren und deren Verwendung in Ihren Testfällen überprüfen können.

import "github.com/stretchr/testify/mock"

type A struct {}

type AMock struct {
    mock.Mock
}

func (a *AMock) perform(url string){
    a.Called(url)
} 

func invoke(s *A, url string){
    // ...
} 

Mit dem testify/mock-Framework können Sie ganz einfach Mocks erstellen, Methodenaufrufe überprüfen, und legen Sie Erwartungen für Ihre Testfälle fest.

Das obige ist der detaillierte Inhalt vonWie verspotte ich Strukturmethodenaufrufe in Go-Tests, ohne Schnittstellen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn