>백엔드 개발 >Golang >단위 테스트를 위해 Go에서 외부 함수를 어떻게 모의할 수 있나요?

단위 테스트를 위해 Go에서 외부 함수를 어떻게 모의할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-02 18:57:37246검색

How Can I Mock External Functions in Go for Unit Testing?

Go에서 외부 함수 모의

외부 패키지에 의존하는 기능을 테스트할 때 이러한 외부 기능을 모의하는 것은 격리되고 안정적인 패키지를 만드는 데 필수적일 수 있습니다. 테스트. 다음 예를 고려하십시오.

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}

z.SomeFunc()를 모의하여 abc() 단위 테스트를 수행할 수 있습니까?

해결책: 리팩토링 및 모의

예, 간단한 리팩토링으로 z.SomeFunc()를 조롱하는 것이 가능합니다. 함수 유형의 변수 zSomeFunc를 도입하고 z.SomeFunc로 초기화합니다. 그런 다음 z.SomeFunc()를 호출하는 함수 내에서 대신 zSomeFunc()를 호출합니다.

var zSomeFunc = z.SomeFunc

func abc() {
    // ...
    v := zSomeFunc()
    // ...
}

테스트 중에 원하는 테스트 동작을 반환하는 사용자 정의 함수를 zSomeFunc에 할당합니다. 예를 들면 다음과 같습니다.

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}

위 내용은 단위 테스트를 위해 Go에서 외부 함수를 어떻게 모의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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