[flutter] 플러터 애플리케이션에서의 http_mock_adapter 사용 사례 소개

소개

플러터는 크로스 플랫폼 개발을 위한 UI 프레임워크입니다. 플러터 애플리케이션을 개발할 때는 네트워크 요청과 응답 처리가 필요한 경우가 있습니다. 이때, 테스트나 개발 과정에서 외부 API 호출을 직접 사용하기 보다는 mock 서버를 사용하여 가상의 응답을 처리하는 것이 일반적입니다. 이를 위해 http_mock_adapter라는 플러터 패키지를 사용할 수 있습니다.

http_mock_adapter란?

http_mock_adapter는 플러터 애플리케이션에서 네트워크 요청을 가로채서 가상의 응답을 줄 수 있는 패키지입니다. 이를 통해 외부 API 호출을 실제로 진행하지 않고도 가상의 응답을 처리할 수 있습니다. 이는 테스트 작성이나 개발 과정에서 API 호출에 대한 의존성을 없애주고, 테스트 가능성을 높여줍니다.

사용 사례

아래는 http_mock_adapter를 사용하여 HTTP GET 요청을 가상의 응답으로 처리하는 예시입니다.

먼저, http 패키지와 http_mock_adapter 패키지를 설치합니다.

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3
  http_mock_adapter: ^1.0.3

다음으로, http_mock_adapter를 사용하여 가상의 응답을 처리하는 코드를 작성합니다.

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  final MockAdapter _mockAdapter = MockAdapter();

  @override
  Widget build(BuildContext context) {
    _mockAdapter.onGet('/api/data').reply(200, {'message': 'Mock response'});

    return MaterialApp(
      title: 'Mock Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Mock Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final response = await http.get(Uri.parse('/api/data'));
              print(response.body);
            },
            child: Text('Make API Request'),
          ),
        ),
      ),
    );
  }
}

위의 예제 코드에서는 애플리케이션의 진입점인 main 함수에서 MockAdapter를 초기화하고, ‘/api/data’ 경로로 GET 요청이 들어온 경우 가상의 응답을 처리하도록 설정하였습니다. 그리고 ElevatedButton을 통해 해당 경로로 요청을 보내면 가상의 응답을 받게 됩니다.

결론

http_mock_adapter를 이용하여 플러터 애플리케이션에서 네트워크 요청을 가로채고 가상의 응답을 처리할 수 있습니다. 이를 통해 개발 및 테스트 과정에서 외부 API 호출에 대한 의존성을 없애고, 가상의 응답을 통해 테스트 가능성을 높일 수 있습니다. 또한, 외부 API 호출이 제한된 환경에서도 개발 작업을 수행할 수 있습니다.

참고 자료