단위 테스트 모의는 외부 종속성을 대체하기 위해 단위 테스트에서 테스트 더블을 생성하여 특정 기능을 격리하고 테스트하는 기술입니다. 기본 원칙은 인터페이스 정의, 모의 생성, 모의 주입입니다. GoogleMock 모의를 사용하려면 인터페이스를 정의하고 모의를 생성한 후 테스트 함수에 삽입해야 합니다. testify/mock 시뮬레이션을 사용하려면 MockClient 구조를 선언하고 Get 메서드에 예상되는 값을 설정하고 테스트 함수에서 시뮬레이션을 설정해야 합니다.
단위 테스트에서 모킹은 테스트 중인 코드의 외부 종속성을 대체하기 위해 테스트 더블을 생성하는 기술입니다. 이를 통해 다른 구성 요소와 상호 작용하지 않고도 특정 기능을 격리하고 테스트할 수 있습니다.
모의의 기본 원칙은 다음과 같습니다.
net/http
패키지를 사용하여 다음 함수를 고려하세요. net/http
包的函数:
func GetPage(url string) (*http.Response, error) { client := http.Client{} return client.Get(url) }
要测试此函数,我们需要模拟 http.Client
,因为它是一个外部依赖项。
可以使用 GoogleMock 库进行模拟。首先,我们定义要模拟的接口:
type MockClient interface { Get(url string) (*http.Response, error) }
然后,我们可以使用 new(MockClient)
import ( "testing" "github.com/golang/mock/gomock" ) func TestGetPage(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() client := mock.NewMockClient(ctrl) client.EXPECT().Get("http://example.com").Return(&http.Response{}, nil) resp, err := GetPage("http://example.com") assert.NoError(t, err) assert.NotNil(t, resp) }이 함수를 테스트하려면
http.Client
를 모의해야 합니다. 외부 종속성. 시뮬레이션에 GoogleMock 사용시뮬레이션에 GoogleMock 라이브러리를 사용할 수 있습니다. 먼저 모의할 인터페이스를 정의합니다: 🎜import ( "testing" "github.com/stretchr/testify/mock" ) type MockClient struct { mock.Mock } func (m *MockClient) Get(url string) (*http.Response, error) { args := m.Called(url) return args.Get(0).(*http.Response), args.Error(1) } func TestGetPage(t *testing.T) { client := new(MockClient) client.On("Get", "http://example.com").Return(&http.Response{}, nil) resp, err := GetPage("http://example.com") assert.NoError(t, err) assert.NotNil(t, resp) }🎜 그런 다음
new(MockClient)
를 사용하여 모의를 생성하고 이를 테스트 함수에 삽입할 수 있습니다: 🎜rrreee🎜 testify/mock을 사용하여 모의🎜🎜 testify/mock 라이브러리는 조롱 기능도 제공합니다. 사용 예는 다음과 같습니다: 🎜rrreee위 내용은 Go 함수 단위 테스트의 모의 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!