[flutter] 플러터에서의 http_mock_adapter를 활용한 지도 API 테스트

플러터는 크로스 플랫폼 앱 개발을 위한 프레임워크로, HTTP 통신을 통해 외부 API와 상호작용하는 경우가 많습니다. 이때 외부 API를 모작으로 테스트하는 것은 중요한 과정입니다. 이번 포스트에서는 플러터에서 http_mock_adapter를 활용하여 지도 API를 테스트하는 방법에 대해 알아보겠습니다.

1. http 패키지와 http_mock_adapter 패키지 추가하기

먼저, 플러터 프로젝트에 http 패키지와 http_mock_adapter 패키지를 추가해야 합니다. pubspec.yaml 파일에서 아래 코드를 추가해주세요.

dependencies:
  http: ^0.13.3
  http_mock_adapter: ^2.0.0

이제 패키지를 설치하기 위해 터미널에서 flutter pub get 명령어를 실행합니다.

2. 테스트 환경 설정하기

실제 API와 통신하기 위해서는 API 키가 필요한 경우가 많습니다. 이를 위해 환경 변수를 사용하면 좋습니다. dotenv 패키지를 사용하여 환경 변수를 관리할 수 있습니다.

dev_dependencies:
  dotenv: ^3.0.0

코드를 작성하기 전에 .env 파일을 프로젝트 루트 디렉토리에 만들고, 아래와 같이 API 키를 설정해주세요.

API_KEY=your_api_key

이제 main.dart 파일에 dotenv 패키지와 http_mock_adapter 패키지를 import 합니다.

import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';

3. 테스트 코드 작성하기

이제 실제로 지도 API를 테스트하는 코드를 작성해보겠습니다. 아래는 예시 코드입니다.

import 'dart:convert';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:http/http.dart' as http;
import 'package:http_mock_adapter/http_mock_adapter.dart';

Future<Map<String, dynamic>> fetchLocation() async {
  final client = HttpClientWithMockAdapter.build();

  // 실제 API 키 대신 .env 파일에서 API 키를 가져옵니다.
  final apiKey = dotenv.env['API_KEY'];
  
  final url = Uri.parse('https://maps.googleapis.com/maps/api/geocode/json?address=New+York&key=$apiKey');

  final response = await client.get(url);

  if (response.statusCode == 200) {
    final data = json.decode(response.body);
    return data;
  } else {
    throw Exception('Failed to fetch location');
  }
}

void main() async {
  await dotenv.load();
  
  final response = await fetchLocation();
  
  print(response);
}

위의 코드에서는 MockAdapter를 사용하여 실제로 API를 호출하지 않고, Mock 데이터를 반환합니다. 이를 활용하여 지도 API를 테스트할 수 있습니다.

위의 코드를 실행하면 fetchLocation() 함수를 호출하여 지도 API의 결과를 출력합니다. MockAdapter의 when 메서드를 사용하여 모크 응답을 정의할 수도 있습니다.

물론, 실제 API와 통신하여 결과를 받아오는 코드로 변경하여 테스트할 수도 있습니다. 이는 개발 과정에서 유용하게 사용될 수 있습니다.

4. 결론

이번 포스트에서는 플러터에서 http_mock_adapter를 활용하여 지도 API를 테스트하는 방법에 대해 알아보았습니다. API 호출을 테스트하기 위해 Mock 데이터를 사용하는 것은 개발과 디버깅 과정에서 매우 유용합니다. http_mock_adapter 패키지를 사용하면 플러터 앱에서 외부 API를 테스트하는 데 도움이 됩니다.

더 많은 테스트 관련 내용은 http_mock_adapter 패키지의 공식 문서를 참고하시기 바랍니다.