Go에서 외부 함수 모의
외부 패키지에 의존하는 기능을 테스트할 때 이러한 외부 기능을 모의하는 것은 격리되고 안정적인 패키지를 만드는 데 필수적일 수 있습니다. 테스트. 다음 예를 고려하십시오.
import x.y.z func abc() { ... v := z.SomeFunc() ... }
z.SomeFunc()를 모의하여 abc() 단위 테스트를 수행할 수 있습니까?
해결책: 리팩토링 및 모의
예, 간단한 리팩토링으로 z.SomeFunc()를 조롱하는 것이 가능합니다. 함수 유형의 변수 zSomeFunc를 도입하고 z.SomeFunc로 초기화합니다. 그런 다음 z.SomeFunc()를 호출하는 함수 내에서 대신 zSomeFunc()를 호출합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!