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);
위 코드에서 MockClient
는 http_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 호출을 필요로하지 않고 모의 데이터를 사용하여 효율적으로 개발할 수 있습니다.