플러터(Flutter)에서는 HTTP 요청 및 응답에 대한 단위 테스트를 진행할 수 있는 다양한 패키지들이 존재합니다. 그 중에서도 http_mock_adapter는 HTTP 요청을 가로채서 모의 응답을 반환하는 데에 특화된 패키지입니다. 이 패키지를 활용하면 실제 서버에 의존하지 않고도 파일 업로드와 같은 기능을 테스트할 수 있습니다.
본 포스트에서는 http_mock_adapter를 통해 플러터 애플리케이션에서 파일 업로드를 테스트하는 방법을 알아보겠습니다.
1. http_mock_adapter 패키지 추가하기
테스트를 위해 http_mock_adapter 패키지를 프로젝트에 추가해야 합니다. 프로젝트의 pubspec.yaml 파일에 다음과 같이 패키지를 추가합니다:
dev_dependencies:
http: ^0.13.3
http_mock_adapter: ^1.1.1
프로젝트를 업데이트하기 위해 터미널에서 다음 명령어를 실행합니다:
flutter pub get
2. 파일 업로드 테스트하기
이제 실제로 파일 업로드를 테스트하기 위해 http_mock_adapter를 사용하는 방법을 살펴보겠습니다.
import 'package:flutter_test/flutter_test.dart';
import 'package:http/http.dart' as http;
import 'package:http_mock_adapter/http_mock_adapter.dart';
void main() {
final mockClient = MockClient();
test('파일 업로드 테스트', () async {
final file = File('path/to/file.jpg');
final request = http.MultipartRequest('POST', Uri.parse('http://example.com/upload'));
request.files.add(await http.MultipartFile.fromPath('file', file.path));
final response = http.Response('{"success": true}', 200);
mockClient.onPost('http://example.com/upload').reply((request) => response);
final result = await request.send();
expect(result.statusCode, 200);
expect(await result.stream.bytesToString(), '{"success": true}');
});
}
위의 코드에서는 http_mock_adapter를 활용하여 파일 업로드를 테스트합니다. 테스트 코드는 flutter_test 패키지 안에 있는 test() 함수를 통해 작성됩니다.
mockClient객체를 생성하여MockClient()클래스의 인스턴스로 초기화합니다.http.MultipartRequest를 사용하여 파일 업로드 요청을 생성하고 파일을 첨부합니다.mockClient를 통해onPost()메서드를 호출하여 특정 URL에 대한 모의 응답을 설정합니다.request.send()메서드를 호출하여 파일 업로드 요청을 실행합니다.- 예상하는 결과인 상태 코드와 응답 메시지를 검증하는
expect()함수를 사용합니다.
3. 결론
이번 포스트에서는 http_mock_adapter를 사용하여 플러터 애플리케이션에서 파일 업로드를 테스트하는 방법을 알아보았습니다. 이를 활용하면 실제 서버를 이용하지 않고도 HTTP 요청 및 응답을 모의하여 테스트할 수 있습니다. http_mock_adapter를 사용하여 테스트 코드 작성 시 효율성과 안정성을 높일 수 있습니다.
더 자세한 내용은 http_mock_adapter의 공식 GitHub 저장소를 참고하시기 바랍니다.