>백엔드 개발 >Golang >상수에 의존하는 Go 함수를 어떻게 테스트할 수 있나요?

상수에 의존하는 Go 함수를 어떻게 테스트할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 14:25:29284검색

How Can We Test Go Functions Dependent on Constants?

테스트를 위해 Go에서 상수 재정의

문제 개요:
Go에서 상수는 불변 값을 제공합니다. 선언 후에는 변경할 수 없습니다. 그러나 이러한 상수에 의존하는 코드를 테스트할 때 테스트 목적으로 다른 값을 삽입하는 것이 어려워집니다.

제안된 솔루션:
잠재적인 솔루션은 다음을 포함하도록 코드를 리팩터링하는 것입니다. 기본 URL을 매개변수로 사용하고 상수 값을 인수로 사용하여 원래 함수를 호출하는 두 번째 함수입니다.

구현 세부 정보:

  1. 도우미 함수 소개:

    • 상수 baseUrl_을 기본 URL을 인수:

      <code class="go">func myFuncImpl(baseUrl string) string {
        // Use `baseUrl` in the function
      }</code>
  2. 원래 함수 수정:

    • 원래 함수 유지 (MyFunc()) 도우미 호출 함수:

      <code class="go">func MyFunc() string {
        return myFuncImpl(baseUrl_)
      }</code>
  3. 상수 유지:

    • 상수 baseUrl_을 참조 지점으로 유지 MyFunc() 함수 내에서 의도한 상수 값이 프로덕션에 사용되도록 보장 코드.

이점:

  • 원본 API를 유지하고 프로덕션 코드의 잠재적인 취약성을 방지합니다.
  • MyFunc() 함수를 수정하지 않고 다른 값으로 테스트할 수 있습니다. 상수.
  • 테스트 중에 유연한 값 할당을 허용하는 전용 함수(myFuncImpl())에 액세스할 수 있습니다.

예:

<code class="go">const baseUrl_ = "http://google.com"

func MyFunc() string {
    return myFuncImpl(baseUrl_)
}</code>

테스트 코드에서 myFuncImpl()을 직접 호출하고 다음에 대한 사용자 정의 값을 할당할 수 있습니다. baseUrl:

<code class="go">func TestMyFunc(t *testing.T) {
    result := myFuncImpl("http://example.org")
    // Assertions and tests
}</code>

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

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