Go 테스트 케이스에서 구조체의 모의 방법 호출
문제:
모의 방법 소스에 인터페이스를 도입하지 않고 Go 테스트 케이스에서 구조체의 메서드 호출 코드?
코드 예:
type A struct {} func (a *A) perfom(string){ ... ... .. } var s := A{} func invoke(url string){ out := s.perfom(url) ... ... }
답변:
구조체의 메서드 호출을 모의하려면, 접근 방식은 Mock 객체를 사용하는 것입니다.
Mock을 사용한 솔루션 객체:
예제 코드:
type Performer interface { perform() } type A struct {} func (a *A) perform() { fmt.Println("real method") } type AMock struct {} func (a *AMock) perform () { fmt.Println("mocked method") } func caller(p Performer) { p.perform() }
테스트 사례에서 모의 구현을 호출 함수에 삽입합니다.
func TestCallerMock(t *testing.T) { mock := &AMock{} caller(mock) }
실제 코드에서는 호출 함수에 실제 구현을 삽입합니다.
func RealInvoke(url string) { a := &A{} out := a.perform(url) }
위 내용은 인터페이스 없이 Go 테스트에서 구조체 메서드 호출을 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!