[flutter] 플러터에서의 http_mock_adapter를 활용한 파일 관리 테스트

플러터(Flutter) 앱을 개발하다 보면 서버와 통신하는 HTTP 요청을 처리해야 할 때가 많습니다. 이때 서버와의 통신을 테스트하기 위해서는 일반적으로 Mock 서버를 사용하게 됩니다. 하지만 파일 관리와 관련된 기능을 테스트할 때는 추가적인 설정이 필요합니다. 이번 블로그 포스트에서는 플러터에서 파일 관리를 테스트하기 위해 http_mock_adapter를 활용하는 방법에 대해 알아보겠습니다.

http_mock_adapter란?

http_mock_adapter는 플러터에서 서버 통신을 담당하는 http 패키지의 Mock 변형입니다. 이 패키지를 사용하면 테스트 시에 가짜 응답을 반환하도록 설정할 수 있습니다. 이를 통해 실제 서버에 테스트용 데이터를 업로드하거나 다운로드할 필요 없이 테스트를 수행할 수 있습니다.

파일 관리를 위한 테스트 시나리오

파일 관리와 관련된 테스트 시나리오는 크게 다음과 같습니다:

  1. 서버로부터 파일 다운로드 요청을 보냅니다.
  2. 서버는 가짜 파일을 응답으로 보냅니다.
  3. 앱은 응답 받은 가짜 파일을 다운로드 합니다.
  4. 다운로드한 파일을 확인하여 정상적으로 다운로드된 것을 확인합니다.

테스트 코드 작성하기

다음은 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() {
  test('파일 다운로드 테스트', () async {
    final mockClient = MockHttpClient();
    final uri = Uri.parse('https://example.com/file.pdf');

    // 가짜 응답 생성
    final mockResponse = MockResponse(
      body: Uint8List(0), // 가짜 파일 데이터
    );

    // 응답을 특정 URI로 설정
    mockClient
        .onGet(uri)
        .reply(200, mockResponse.body, headers: {'content-length': '0'});

    final response = await http.get(uri);

    // 응답 코드 확인
    expect(response.statusCode, 200);

    // 다운로드한 파일 내용 확인
    expect(response.bodyBytes.length, 0);
  });
}

위의 코드에서는 MockHttpClient를 사용하여 http 클라이언트를 대체합니다. 가짜 응답을 생성하고 해당 응답을 특정 URI에 대한 GET 요청에 응답하도록 설정합니다. 그리고 테스트를 위해 해당 URI로 GET 요청을 보내고, 응답 상태 코드와 다운로드한 파일의 내용을 검증합니다.

마무리

플러터에서 파일 관리와 관련된 테스트 시나리오를 테스트하기 위해서는 http_mock_adapter를 사용할 수 있습니다. 이를 통해 실제 서버와 상호작용하지 않고도 테스트를 수행할 수 있습니다. 위의 예시 코드를 참고하여 테스트를 진행해보세요.

참고 자료