Go Http.Request.FormFile 테스트
여러 부분 양식 데이터가 필요한 엔드포인트를 테스트하려면 파일 업로드 시뮬레이션이 필요합니다. 이는 httptest 라이브러리를 사용하여 양식 파일로 게시물 요청을 생성함으로써 달성할 수 있습니다.
전체 FormFile 구조체를 모의하는 대신 mime/multipart 패키지를 활용하여 양식 파일을 생성할 수 있습니다. CreateFormFile 함수는 지정된 필드 이름과 파일 이름을 사용하여 다중 부분 필드 헤더를 생성합니다.
CreateFormFile에서 생성된 io.Writer를 httptest.NewRequest에 전달하면 양식 파일로 게시 요청을 시뮬레이션할 수 있습니다.
이것이 어떻게 구현될 수 있는지에 대한 예는 다음과 같습니다.
<code class="go">func TestUploadImage(t *testing.T) { // Set up an io.Pipe to avoid buffering pr, pw := io.Pipe() writer := multipart.NewWriter(pw) go func() { defer writer.Close() part, err := writer.CreateFormFile("fileupload", "someimg.png") if err != nil { t.Error(err) } img := createImage() err = png.Encode(part, img) if err != nil { t.Error(err) } }() request := httptest.NewRequest("POST", "/", pr) request.Header.Add("Content-Type", writer.FormDataContentType()) response := httptest.NewRecorder() handler := UploadFileHandler() handler.ServeHTTP(response, request) if response.Code != 200 { t.Errorf("Expected %s, received %d", 200, response.Code) } if _, err := os.Stat("./uploads/someimg.png"); os.IsNotExist(err) { t.Error("Expected file ./uploads/someimg.png' to exist") } }</code>
이 함수는 이미지 패키지를 사용하여 동적으로 이미지를 생성하고 png.Encode를 사용하여 멀티파트 작성기에 직접 씁니다. 이는 실제 파일 I/O 없이 이미지 파일 업로드를 시뮬레이션합니다.
위 내용은 Go Http.Request.FormFile 테스트에서 파일 업로드를 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!