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 중국어 웹사이트의 기타 관련 기사를 참조하세요!