[flutter] 플러터 http_mock_adapter를 이용한 API 모의 데이터 생성

Flutter 앱을 개발하다 보면 외부 API 호출이 필요한 경우가 많습니다. 이때 개발 중인 앱에서 외부 API를 호출하여 데이터를 받아오기 위해 실제 API를 사용하는 것은 테스트 및 디버깅 과정에서는 번거로울 수 있습니다. 이럴 때 http_mock_adapter라이브러리를 사용하면 API 호출을 실제 서버로 보내지 않고, 모의 데이터를 생성하여 개발 및 테스트에 용이하게 할 수 있습니다.

http_mock_adapter란?

http_mock_adapter는 플러터 앱에서 네트워크 요청을 모의해주는 테스트용 HTTP 클라이언트입니다. 이 라이브러리를 사용하면 기존의 http 패키지를 사용하는 앱에서도 API 호출을 모의(mock)하여 실제 API와 동일한 응답을 받을 수 있습니다.

http_mock_adapter 설치하기

http_mock_adapter를 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다. pubspec.yaml 파일에 다음과 같이 http_mock_adapter를 추가합니다.

dev_dependencies:
  http_mock_adapter: ^1.0.0

그리고 터미널에서 flutter pub get 명령을 실행하여 의존성을 설치합니다.

http_mock_adapter로 모의 데이터 생성하기

이제 http_mock_adapter를 사용하여 API 호출을 모의해보겠습니다. 가장 먼저 HttpMockAdapter 인스턴스를 생성합니다.

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

final mockClient = MockClient();
final client = http.Client();

final mockAdapter = HttpMockAdapter(client: mockClient);

위 코드에서 MockClienthttp_mock_adapter의 일부로 제공되는 HTTP 클라이언트입니다. 이를 사용하여 API 요청을 모의할 수 있습니다. client는 기존의 http 패키지에서 사용하는 클라이언트입니다.

이제 모의 데이터를 생성해보겠습니다.

final responseData = {
  'id': 1,
  'name': 'John Doe',
  'email': 'johndoe@example.com'
};

mockAdapter.onGet('/users/1').reply(200, responseData);

final response = await client.get(Uri.parse('http://example.com/users/1'));
final body = jsonDecode(response.body);

print(body); // { 'id': 1, 'name': 'John Doe', 'email': 'johndoe@example.com' }

위 코드에서는 /users/1 엔드포인트에 GET 요청이 오면 responseData를 응답으로 반환하도록 설정하였습니다. 이제 실제로 client를 사용하여 해당 엔드포인트에 GET 요청을 보내면 responseData를 받아올 수 있습니다. 받아온 응답은 JSON 형식으로 파싱하여 사용할 수 있습니다.

결론

이렇게 http_mock_adapter를 사용하여 API 호출을 모의 데이터로 대체할 수 있습니다. 이를 통해 개발 및 테스트 과정에서 실제 API 호출을 필요로하지 않고 모의 데이터를 사용하여 효율적으로 개발할 수 있습니다.

참고 자료