Go에서 구조체 메서드 호출 모의
Go에서 인터페이스를 도입하지 않고 구조체의 메서드 호출을 모의하는 것은 다음과 같은 기술을 통해 달성할 수 있습니다. "이중" 패턴. 구현 방법은 다음과 같습니다.
1. 수행자 인터페이스 생성:
모의하려는 메서드를 캡슐화하는 인터페이스를 정의합니다.
type Performer interface { perform() }
2. Mock 및 실제 구현으로 인터페이스 구현:
두 개의 구조체를 생성합니다. 하나는 실제 구현(A)용이고 다른 하나는 Performer 인터페이스를 구현하는 모의 구조체(AMock)용입니다.
type A struct{} func (a *A) perform() { fmt.Println("real method") } type AMock struct{} func (a *AMock) perform() { fmt.Println("mocked method") }
3. 종속성 주입 사용:
invoke() 함수에서 전역 변수에 직접 액세스하는 대신 종속성 주입을 사용하여 Performer 인터페이스를 전달합니다.
func invoke(p Performer) { p.perform() }
4 . 테스트에 모의 객체 삽입:
테스트 사례에서 AMock 인스턴스를 호출() 함수에 삽입합니다. 이를 통해 모의 메서드의 동작을 시뮬레이션할 수 있습니다.
// Create a mock performer m := &AMock{} // Inject the mock into invoke invoke(m)
5. 모의 호출 확인(선택 사항):
testify/mock과 같은 모의 라이브러리를 사용하는 경우 모의 메서드가 예상 인수 및 빈도로 호출되었는지 추가로 확인할 수 있습니다.
// Assert that the mocked method was called mock.AssertCalled(t, "perform", "argument1", "argument2")
이중 패턴을 활용하면 Go에서 구조체의 메서드 호출을 효과적으로 모의할 수 있어 철저한 테스트에 필요한 유연성과 격리성을 제공할 수 있습니다.
위 내용은 인터페이스 없이 Go에서 구조체 메소드 호출을 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!