>백엔드 개발 >Golang >Go 테스트 케이스에서 구조체 메서드 호출을 어떻게 모의할 수 있나요?

Go 테스트 케이스에서 구조체 메서드 호출을 어떻게 모의할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-05 07:09:17895검색

How Can I Mock Struct Method Calls in Go Test Cases?

Go 테스트 사례에서 구조체의 모의 메서드 호출

Go에서는 구조체의 모의 메서드 호출에 대한 기본 지원이 없습니다. 그러나 유사한 기능을 달성하기 위해 여러 기술을 사용할 수 있습니다.

한 가지 접근 방식은 구조체의 관련 메서드를 나타내는 인터페이스를 정의하고 해당 인터페이스의 모의 구현을 만드는 것입니다. 그런 다음 이 모의 구현을 실제 구조체 대신 테스트 사례에 주입할 수 있습니다.

다음 코드 샘플을 고려하세요.

type A struct {}

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

이를 사용하는 호출() 함수를 테스트하려면 수행합니다. () 메소드를 사용하여 A 구조체의 모의 구현을 생성할 수 있습니다:

type AMock struct {
    PerformFunc func(url string)
}

func (m *AMock) perform(url string) {
    if m.PerformFunc != nil {
        m.PerformFunc(url)
    }
}

테스트 사례에서 모의 ​​구현은 호출()에 주입될 수 있습니다. 함수:

func TestInvoke(t *testing.T) {
    mock := &AMock{}
    mock.PerformFunc = func(url string) {
        // Test logic for mock behavior
    }
    invoke(mock, "example.com")
}

모의에 PerformFunc 필드를 설정하면 모의 메서드의 동작을 제어하고 테스트에서 어설션할 수 있습니다.

모의에 대한 또 다른 접근 방식은 종속성 주입을 사용하는 것입니다. Mocking을 지원하는 프레임워크입니다. 이를 통해 보다 유연하고 다양한 모의 기능이 가능하지만 추가 구성 및 설정이 필요합니다.

궁극적으로 가장 적합한 모의 방법은 개발 중인 테스트 사례 및 애플리케이션의 특정 요구 사항과 제약 조건에 따라 다릅니다.

위 내용은 Go 테스트 케이스에서 구조체 메서드 호출을 어떻게 모의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.