쿼리 매개변수를 바인딩하는 Gin 핸들러 함수를 단위 테스트할 때 잘못된 메모리 주소 또는 nil 부적절하게 초기화된 HTTP 요청으로 인해 포인터 역참조 오류가 발생합니다.
c.BindQuery()를 사용하여 쿼리 매개변수 바인딩을 모의하려면 적절한 URL과 URL.RawQuery를 사용하여 HTTP 요청을 초기화하세요. 다음 도우미 기능을 사용하세요.
func mockGin() (*gin.Context, *httptest.ResponseRecorder) { req := &http.Request{ URL: &url.URL{}, Header: make(http.Header), } q := req.URL.Query() // Add query parameters to the request // ... req.URL.RawQuery = q.Encode() c, _ := gin.CreateTestContext(httptest.NewRecorder()) c.Request = req return c, httptest.NewRecorder() }
서비스 호출을 테스트하려면 서비스를 인터페이스로 만들고 핸들러에 삽입하세요. 서비스를 Gin 컨텍스트 값으로 설정하여 단위 테스트에서 이를 모의할 수 있습니다. 예:
func GetMaterialByFilter(c *gin.Context) { weldprogService := mustGetService(c) // ... Call the service method ... } func mustGetService(c *gin.Context) services.WeldprogService { svc, exists := c.Get("svc_context_key") if !exists { panic("service was not set") } return svc.(services.WeldprogService) }
단위 테스트에서 모의 서비스를 컨텍스트에 설정합니다.
c.Set("svc_context_key", &mockSvc{})
여기서 mockSvc는 서비스 인터페이스를 구현합니다.
위 내용은 쿼리 매개변수를 사용하여 진 처리기 기능을 효과적으로 단위 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!