[flutter] http_mock_adapter를 활용한 플러터 애플리케이션의 안정성 테스트 방법

플러터 애플리케이션을 개발하는 동안 API 통신 등 외부 의존성에 의존하는 경우가 많습니다. 이러한 경우 실제 API 호출을 대신하여 테스트할 수 있는 방법이 필요합니다. 이때 flutter_http_mock_adapter 패키지를 사용하면 API 응답을 가상화하여 안정성 테스트를 수행할 수 있습니다.

flutter_http_mock_adapter란?

flutter_http_mock_adapter는 플러터 애플리케이션에서 네트워크 요청을 가로채고 테스트용 응답과 매핑하는 기능을 제공하는 패키지입니다. 이 패키지를 사용하면 실제 API 호출 없이 애플리케이션의 외부 의존성을 테스트할 수 있습니다.

설치

프로젝트의 pubspec.yaml 파일에 http_mock_adapter 패키지를 추가합니다.

dependencies:
  flutter_http_mock_adapter: ^1.0.0

사용 방법

  1. 테스트용 응답 생성

    API 호출에 대한 응답을 생성해야 합니다. 다음은 dio 라이브러리의 인터셉터 API를 사용하는 예입니다.

    import 'package:dio/dio.dart';
    import 'package:flutter_http_mock_adapter/flutter_http_mock_adapter.dart';
    
    void main() {
      final Dio dio = Dio();
      final DioAdapter dioAdapter = DioAdapter();
    
      dio.httpClientAdapter = dioAdapter;
    
      dioAdapter.onAnyRequest().reply(200, {'message': 'Hello world!'});
    
      // API 호출될 때 테스트용 응답이 반환됩니다.
    
      dio.get('/test').then((response) {
        print(response.data); // {'message': 'Hello world!'}
      });
    }
    
  2. 테스트 시 활성화

    테스트를 수행하는 영역에서 Mockdio 클래스를 사용하여 HttpClientAdapter를 설정합니다.

    import 'package:dio/dio.dart';
    import 'package:flutter_http_mock_adapter/flutter_http_mock_adapter.dart';
    
    void main() {
      final Dio dio = Dio();
      final MockDioAdapter mockDioAdapter = MockDioAdapter();
    
      dio.httpClientAdapter = mockDioAdapter;
    
      final response = await dio.get('/test');
    
      print(response.data); // {'message': 'Hello world!'}
    }
    

정리

flutter_http_mock_adapter 패키지를 사용하면 테스트용 응답을 생성하여 플러터 애플리케이션의 안정성을 테스트할 수 있습니다. 이를 통해 실제 API를 호출하는 외부 의존성에 의존하지 않고도 효과적인 테스트를 수행할 수 있습니다.

참고 자료