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

개요

플러터(Flutter)는 모바일 애플리케이션 개발을 위한 강력한 프레임워크입니다. 이번 글에서는 테스트 환경에서 파일을 다운로드하기 위해 http_mock_adapter를 사용하는 방법에 대해 알아보겠습니다.

http_mock_adapter란?

http_mock_adapterhttp 패키지를 통해 발생하는 네트워크 요청을 가로채서 가짜 응답을 반환하는 라이브러리입니다. 테스트 환경에서 네트워크 호출을 시뮬레이션하거나 응답을 조작하여 테스트할 수 있습니다.

파일 다운로드 테스트

의존성 선언

먼저, http_mock_adapter 패키지를 프로젝트의 pubspec.yaml 파일에 추가해야 합니다. 다음 코드를 dependencies 부분에 추가합니다.

dev_dependencies:
  http_mock_adapter: ^1.1.0

테스트 코드 작성

다음은 파일을 다운로드하는 테스트 코드입니다.

import 'dart:io';
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 = MockAdapter();

  setUpAll(() async {
    // 파일 다운로드 URL
    final url = 'https://example.com/file.pdf';

    // 모의 응답 설정
    final file = File('test/assets/mock_file.pdf');
    final mockResponse = http.Response.file(file, 200);

    mockClient
        .onGet(url)
        .reply(200, mockResponse.bodyBytes, headers: mockResponse.headers);
  });

  test('파일 다운로드 테스트', () async {
    final url = 'https://example.com/file.pdf';

    // 모의 응답 사용
    final response = await mockClient.get(Uri.parse(url));

    // 파일 저장 경로
    final filePath = 'path/to/save/file.pdf';

    // 파일 저장
    final file = File(filePath);
    await file.writeAsBytes(response.bodyBytes);

    // 파일이 생성되었는지 확인
    expect(await file.exists(), true);
  });
}

테스트 실행

위의 코드를 테스트 파일로 작성한 뒤, flutter test 명령어를 실행하여 테스트를 수행합니다. http_mock_adapter가 네트워크 요청을 가로채고 모의 응답을 반환하므로, 파일 다운로드 테스트를 정확하게 수행할 수 있습니다.

결론

이번 글에서는 플러터에서 http_mock_adapter를 사용하여 파일 다운로드 테스트를 하는 방법을 알아보았습니다. 테스트 환경에서 실제 네트워크 호출을 시뮬레이션하여 모의 응답을 반환할 수 있으므로, 효율적인 테스트를 수행할 수 있습니다. 추가적인 정보는 http_mock_adapter의 공식 문서를 참고하세요.