[flutter] 플러터에서 http_mock_adapter를 이용한 파일 업로드 테스트

플러터(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() 함수를 통해 작성됩니다.

3. 결론

이번 포스트에서는 http_mock_adapter를 사용하여 플러터 애플리케이션에서 파일 업로드를 테스트하는 방법을 알아보았습니다. 이를 활용하면 실제 서버를 이용하지 않고도 HTTP 요청 및 응답을 모의하여 테스트할 수 있습니다. http_mock_adapter를 사용하여 테스트 코드 작성 시 효율성과 안정성을 높일 수 있습니다.

더 자세한 내용은 http_mock_adapter의 공식 GitHub 저장소를 참고하시기 바랍니다.