php editor Yuzi 소프트웨어 개발에서는 종종 코드를 테스트해야 합니다. 그러나 우리는 불필요한 혼란을 피하기 위해 테스트 코드를 프로덕션 환경에 노출하고 싶지 않습니다. 그렇다면 테스트 코드를 프로덕션 코드에 노출시키지 않고 한 모듈에서 다른 모듈로 가져오는 방법은 무엇일까요? 이는 일반적인 문제이지만 해결책이 있습니다. 이 기사에서는 이 목표를 달성하고 코드를 더욱 안전하고 안정적으로 만드는 효과적인 방법을 소개합니다.
TLDR: TestLogger 구조체를 logutils/test-logger_test.go에 배치하고 인증/login_tests.go에서 참조하려고 했습니다. 인증 모듈에 대한 테스트를 빌드할 때 컴파일러는 TestLogger가 선언되지 않았다고 불평합니다. 유일한 해결 방법은 test-logger_test.go의 이름을 test-logger.go로 바꾸는 것입니다. 그러나 이렇게 하면 프로덕션 코드에서 TestLogger를 참조할 위험이 있습니다.
go 테스트를 실행할 때 golang은 테스트 코드(접미사가 _test.go인 파일에 선언된 코드)를 한 모듈에서 다른 모듈로 가져오지 않는 것 같습니다. 내가 뭔가 잘못하고 있는 걸까요, 아니면 이것이 golang이 설계된 방식인가요? 해결책이 있나요?
설명하기 위한 간단한 예:
저는 "라이브러리" 모듈(il logutils라고 부르겠습니다)과 "응용 프로그램" 모듈("인증"이라고 부르겠습니다)이 있습니다. logutils 모듈에는 로거(예: FileLogger, HttpLogger)의 모든 구현 관련 기능을 다루는 자체 테스트가 있으며 모든 것이 정상입니다.
logutils 모듈은 또한 "클라이언트" 모듈(예: "인증")에서 사용할 수 있는 TestLogger를 선언하여 파일 또는 http 로깅을 설정할 필요 없이 모든 것을 올바르게 기록하는지 확인합니다. 기본적으로 Logger 인터페이스를 구현하지만 테스트가 끝날 때 확인할 수 있는 버퍼에 모든 것을 기록합니다.따라서 "인증" 모듈은 TestLogger를 인스턴스화하는 자체 _test.go 파일을 선언할 수 있으며 모든 것이 매력처럼 작동합니다.
저를 괴롭히는 점은 TestLogger가 테스트 파일(logutils/test-logger_test.go)이 아닌 일반 프로덕션 파일(logutils/test-logger.go)에서 선언되어야 한다는 것입니다. 그렇지 않으면 인증 테스트에서 TestLogger가 다음과 같다고 불평하게 됩니다. 정의되지 않았습니다. 그러나 이렇게 하면 TestLogger가 프로덕션 코드에서 참조/사용되는 것을 막을 수 없습니다.
내가 원하는 것은 모든 logutils _test.go 파일의 코드를 모든 인증 _test.go 파일(프로덕션 .go 파일은 아님)로 가져올 수 있다는 것입니다.
통찰력/제안이 있으신가요?
편집: 오타 수정
이것을 사용할 수 없습니다. 아주 간단합니다. ("프로덕션 .go 파일" 같은 것은 없습니다. 테스트 코드는 "비프로덕션"이 아닙니다.)
위 내용은 테스트 코드를 프로덕션 코드에 노출하지 않고 한 모듈에서 다른 모듈로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!