인터페이스가 없는 Go 테스트 사례에서 구조체의 모의 방법 호출
Go에는 Mockito 및 jMock과 같은 프레임워크와 직접적으로 동등한 것이 없습니다. 구조체의 메서드 호출을 조롱합니다. 그러나 소스 코드에 인터페이스를 도입하지 않고도 비슷한 수준의 모의를 달성하기 위해 사용할 수 있는 몇 가지 기술이 있습니다.
한 가지 접근 방식은 원본 구조체와 동일한 메서드를 구현하는 모의 구조체를 만드는 것입니다. 그런 다음 모의 구조체를 테스트해야 하는 함수나 메서드에 삽입하여 동작을 제어하고 호출을 확인할 수 있습니다.
다음 예를 고려하세요.
type A struct {} func (a *A) perform(url string){ // ... } func invoke(s A, url string){ out := s.perform(url) // ... }
Perform의 메서드 호출을 모의하면 A와 동일한 인터페이스를 구현하는 모의 구조체 AMock을 생성할 수 있습니다.
type AMock struct {} func (a *AMock) perform(url string) { // mocked implementation }
테스트 사례에서 호출 함수에 모의 구조체를 주입하고 예상되는 동작을 주장할 수 있습니다.
또 다른 접근 방식은 testify/mock과 같은 종속성 주입 프레임워크를 사용하는 것입니다. 이 프레임워크는 인터페이스를 모의하고 테스트 사례에서 사용법을 확인할 수 있는 확장 메서드 세트를 제공합니다.
import "github.com/stretchr/testify/mock" type A struct {} type AMock struct { mock.Mock } func (a *AMock) perform(url string){ a.Called(url) } func invoke(s *A, url string){ // ... }
testify/mock 프레임워크를 사용하면 쉽게 모의 인터페이스를 생성하고, 메서드 호출을 확인하고, 테스트 사례에 대한 기대치를 설정하세요.
위 내용은 인터페이스를 사용하지 않고 Go 테스트에서 구조체 메서드 호출을 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!