Gin에서 HTTP 요청과 관련된 작업을 테스트하려면 *http를 초기화합니다. .Gin 컨텍스트를 요청하고 설정합니다. 특히 c.BindQuery 테스트를 위해 요청의 URL 및 URL.RawQuery를 초기화합니다.
import ( "net/http/httptest" "github.com/gin-gonic/gin" ) func mockGin() (*gin.Context, *httptest.ResponseRecorder) { w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) // Test request req := &http.Request{ URL: &url.URL{}, Header: make(http.Header), } // Test query testQuery := weldprogs.QueryParam{/* init fields */} q := req.URL.Query() for _, s := range testQuery.Basematgroup_id { q.Add("basematgroup_id", s) } // Set URL.RawQuery req.URL.RawQuery = q.Encode() // Set request to Gin context c.Request = req return c, w }
JSON 바인딩 모의에 대한 지침은 이 리소스를 참조하세요.
다음과 같은 서비스 services.WeldprogService.GetMaterialByFilter(&queryParam)는 있는 그대로 테스트할 수 없습니다. 테스트 가능하게 하려면:
인터페이스 및 컨텍스트 값 접근 방식:
type services interface { GetMaterialByFilter(*weldprogs.QueryParam) (*weldprogs.MaterialByFilter, error) } func mockWeldprogService(service services) { return func(c *gin.Context) { c.Set("svc_context_key", service) } } func TestGetMaterialByFilter(t *testing.T) { w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Use(mockWeldprogService(&mockSvc{})) GetMaterialByFilter(c) // ... }
위 내용은 모의를 사용하여 진 처리기 기능을 효과적으로 단위 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!