Go에서는 외부 패키지에서 가져온 함수에 의존하는 함수를 테스트하는 것이 어려울 수 있습니다. 다음 예를 고려해 보세요.
import x.y.z func abc() { ... v := z.SomeFunc() ... }
Go에서 z.SomeFunc()를 모의할 수 있나요?
예. 간단한 코드 수정. 함수 유형 변수 zSomeFunc를 도입하고 이를 z.SomeFunc로 초기화함으로써 패키지 코드는 z.SomeFunc() 대신 이 변수를 호출할 수 있습니다. 이를 통해 테스트 중에 가져온 함수를 모의할 수 있습니다.
var zSomeFunc = z.SomeFunc func abc() { ... v := zSomeFunc() ... }
테스트에서 테스트에 필요한 대로 작동하는 사용자 정의 함수를 zSomeFunc에 할당할 수 있습니다.
func TestAbc(t *testing.T) { // Save current function and restore at the end: old := zSomeFunc defer func() { zSomeFunc = old }() zSomeFunc = func() int { // This will be called, do whatever you want to, // return whatever you want to return 1 } // Call the tested function abc() // Check expected behavior }
코드를 리팩토링하면 가져온 함수를 모의하고 해당 함수가 코드에 미치는 영향을 더 효과적으로 테스트할 수 있습니다. 이 기술은 타사 종속성을 테스트하거나 대상 테스트를 위해 특정 기능을 분리할 때 특히 유용할 수 있습니다.
위 내용은 효과적인 테스트를 위해 Go에서 가져온 함수를 어떻게 모의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!