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

안녕하세요! 이번 글에서는 플러터 애플리케이션에서 http_mock_adapter를 사용하는 방법에 대해 알아보겠습니다. http_mock_adapter는 테스트나 개발 중에 HTTP 요청을 가로채 목업 데이터를 반환해주는 라이브러리입니다. 이를 통해 실제 서버에 요청을 보내지 않고도 애플리케이션을 테스트할 수 있습니다.

1. http_mock_adapter란?

http_mock_adapter는 HttpClient를 사용하여 HTTP 요청을 가로채는 방식으로 동작합니다. 가로챈 HTTP 요청에 대해 미리 정의된 응답을 반환하므로, 실제 서버 통신 없이도 애플리케이션의 다양한 시나리오를 테스트할 수 있습니다.

2. http_mock_adapter 설치하기

먼저, http_mock_adapter를 설치해야 합니다. pubspec.yaml 파일에 다음과 같이 의존성을 추가합니다:

dev_dependencies:
  http_mock_adapter: ^1.1.0

그리고 다음 명령어를 실행하여 의존성을 업데이트합니다:

$ flutter pub get

3. http_mock_adapter 사용하기

http_mock_adapter를 사용하기 위해서는 HttpClient 객체를 생성하고, 해당 객체에 HttpClientAdapter를 설정해야 합니다. 다음은 간단한 예제 코드입니다:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // HttpClient 객체 생성
    final httpClient = http.Client();

    // HttpClientAdapter를 설정하여 MockAdapter로 설정
    final mockAdapter = MockAdapter();
    httpClient.copyWith(adapter: mockAdapter);

    // 가로채고자 하는 요청에 대한 응답을 정의
    mockAdapter.onGet('/api/data').reply(200, {'message': 'Mock data'});

    return MaterialApp(
      title: 'Mock Adapter Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Mock Adapter Example'),
        ),
        body: Center(
          child: FutureBuilder(
            future: httpClient.get(Uri.parse('/api/data')),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasData) {
                return Text(snapshot.data.body);
              } else {
                return Text('Error occurred');
              }
            },
          ),
        ),
      ),
    );
  }
}

위의 코드에서는 /api/data 경로에 대한 GET 요청을 가로채고, 응답으로 {'message': 'Mock data'}를 정의하고 있습니다. 따라서 애플리케이션을 실행하면 해당 경로에 대한 요청은 실제 서버에 전달되지 않고, 목업 데이터가 반환됩니다.

4. http_mock_adapter 활용하기

http_mock_adapter는 다양한 시나리오에서 활용할 수 있습니다. 예를 들어, 특정 요청이 실패했을 때의 동작을 테스트할 수도 있고, 다양한 상태 코드에 대한 응답을 정의하여 테스트할 수도 있습니다. http_mock_adapter의 모든 기능과 메소드에 대한 사용법은 공식 문서를 참고하시기 바랍니다[^1^].

5. 참고 자료

이번 글에서는 플러터 애플리케이션에서 http_mock_adapter를 사용하는 방법에 대해 알아보았습니다. http_mock_adapter를 활용하면 실제 서버와의 통신 없이도 다양한 시나리오를 테스트할 수 있으므로, 개발과 테스트의 효율성이 크게 향상됩니다.