테스트를 위해 Go에서 상수 재정의
Go 프로그래밍 영역에서 상수는 고정 값을 저장하는 불변의 수단을 제공합니다. 이러한 강성은 안정성을 보장하지만 테스트 중에 이러한 값을 변경하기 위한 유연성이 필요할 때 문제가 됩니다. 예를 들어 원격 API에 액세스하는 HTTP 클라이언트가 있는 시나리오를 생각해 보세요. 테스트 목적으로 실제 API 호출을 수행하는 대신 모의 서버를 활용하는 것이 좋습니다.
간단한 접근 방식은 baseUrl을 전역 변수로 선언하고 테스트 중에 해당 값을 수정하는 것입니다. 그러나 이는 프로덕션 코드에 영향을 미치는 런타임 변경 위험을 초래하므로 잠재적인 단점이 있습니다. 코드 무결성을 유지하려면 baseUrl을 프로덕션용 상수로 정의하고 테스트용으로 변경할 수 있는 기능을 유지하는 것이 좋습니다.
해결책: 매개변수를 사용한 리팩토링
해결책은 코드를 약간 리팩토링하는 것입니다. 함수 내에서 상수를 사용하는 대신 원하는 baseUrl 값을 허용하는 매개변수를 도입하세요. 이를 통해 원래 함수는 API를 유지하면서 테스트 유연성을 제공할 수 있습니다.
<code class="go">const baseUrl_ = "http://google.com" func MyFunc() string { // Call other function passing the const value return myFuncImpl(baseUrl_) } func myFuncImpl(baseUrl string) string { // use baseUrl // Same implementation that was in your original MyFunc() function }</code>
이 접근 방식을 사용하면 라이브러리의 API가 변경되지 않은 상태로 유지됩니다. 그러나 이제는 다른 baseUrl 값으로 myFuncImpl()을 테스트하여 원래 MyFunc()의 기능을 테스트할 수 있습니다. MyFunc() 자체는 baseUrl_ 상수를 myFuncImpl()에 지속적으로 전달하므로 영향을 받지 않습니다.
내보낸 테스트 함수 또는 내보내지 않은 테스트 함수
내보낼지 아니면 내보내기 취소할지 결정 myFuncImpl() 함수는 테스트 코드의 배치에 따라 달라집니다. 동일한 패키지 내에 있는 경우 내보낸 상태에 관계없이 문제 없이 myFuncImpl()을 직접 호출할 수 있습니다.
위 내용은 효과적인 테스트를 위해 Go에서 상수를 어떻게 수정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!