프로덕션 코드에서는 기본 URL과 같은 안정적인 값에 상수를 사용하는 것이 바람직한 경우가 많습니다. 그러나 Go에서 const의 기본 구현은 재할당을 허용하지 않기 때문에 이는 테스트 시 문제가 될 수 있습니다.
baseUrl 상수를 재정의하려고 시도하는 다음 코드 조각을 고려해 보세요. 테스트 파일:
<code class="go">package main const baseUrl = "http://google.com" // in main_test.go ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ... } const baseUrl = ts.URL // throws error: const baseUrl already defined</code>
Go에서는 상수 재정의를 허용하지 않기 때문에 이미 정의된 const baseUrl 오류로 인해 이 코드는 실패합니다.
활성화하려면 테스트하기 쉬운 상수를 사용하려면 코드 리팩터링을 고려하세요. 전역 상수를 사용하는 대신 상수 값을 매개변수로 사용하는 함수를 만듭니다.
<code class="go">const baseUrl_ = "http://google.com" func MyFunc(baseUrl string) { // Use baseUrl }</code>
테스트 파일에서 프로덕션 코드에 영향을 주지 않고 baseUrl 매개변수를 재정의할 수 있습니다.
<code class="go">// in main_test.go ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ... } myFuncImpl(ts.URL) // Call the function with the test URL</code>
이 접근 방식을 사용하면 원래 구현을 유지하면서 다양한 상수 값으로 코드를 테스트할 수 있습니다. 원래 함수 MyFunc()는 여전히 생산 상수 값을 사용하여 테스트하지 않는 시나리오의 안정성을 보장합니다.
위 내용은 테스트를 위해 Go에서 상수를 어떻게 재정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!