>백엔드 개발 >Golang >Golang에서 인수 전달을 올바르게 테스트하는 방법은 무엇입니까?

Golang에서 인수 전달을 올바르게 테스트하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-07 17:34:13848검색

How to Correctly Test Argument Passing in Golang?

Golang에서 인수 전달 테스트

Golang에서는 플래그를 사용하여 인수를 함수에 전달할 수 있습니다. 인수 전달을 테스트하려면 명령줄 인수 전달을 시뮬레이션하는 테스트를 작성할 수 있습니다.

문제

다음 테스트를 실행할 때:

import (
    "os"
    "testing"
)

func TestArgs(t *testing.T) {
    expected := "bla"
    os.Args = []string{"-user=bla"}

    actual := passArguments()

    if actual != expected {
        t.Errorf("Test failed, expected: '%s', got:  '%s'", expected, actual)
    }
}

예상 결과("bla")가 실제 결과와 일치하지 않는다는 오류 메시지와 함께 테스트가 실패합니다. ("root").

해결책

os.Args의 첫 번째 값이 실행 파일 자체의 경로이기 때문에 문제가 발생합니다. 이 문제를 해결하려면 실행 파일과 인수를 모두 포함하도록 os.Args 슬라이스를 업데이트해야 합니다.

os.Args = []string{"cmd", "-user=bla"}

또한 os.Args는 전역 변수이므로 원래 상태를 저장하고 다른 테스트에 방해가 되지 않도록 테스트 후에 복원하세요.

oldArgs := os.Args
defer func() { os.Args = oldArgs }()

위 내용은 Golang에서 인수 전달을 올바르게 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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