[flutter] 플러터에서의 http_mock_adapter를 이용한 네트워크 연결 상태 시뮬레이션

플러터는 앱 개발 시 네트워크 연결 상태를 시뮬레이션하고 테스트하는 중요한 요소입니다. 이를 위해 http_mock_adapter 패키지를 사용할 수 있습니다. http_mock_adapter는 앱에서 HTTP 요청을 가로채고 가짜 응답을 반환하는 방식으로 동작합니다.

http_mock_adapter 패키지 설치하기

먼저, http_mock_adapter 패키지를 pubspec.yaml 파일의 dependencies 섹션에 추가합니다:

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.0
  http_mock_adapter: ^1.1.0

그리고 패키지를 설치합니다:

$ flutter pub get

네트워크 요청 시뮬레이션하기

http_mock_adapter를 사용하면 네트워크 요청을 가로챌 수 있고, 가짜 응답을 반환할 수 있습니다. 다음은 플러터 앱에서 http_mock_adapter를 사용하여 네트워크 연결 상태를 시뮬레이션하는 예제입니다:

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 {
  final mockAdapter = MockAdapter();

  @override
  Widget build(BuildContext context) {
    // 모든 HTTP 요청에 대해 가짜 응답을 반환하도록 설정
    mockAdapter.onAny().reply(200, 'Mocked response');

    return MaterialApp(
      title: 'Mock Adapter Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Mock Adapter Example'),
        ),
        body: Center(
          child: ElevatedButton(
            child: Text('Make Request'),
            onPressed: makeRequest,
          ),
        ),
      ),
    );
  }

  void makeRequest() async {
    // `http_mock_adapter`로 생성한 클라이언트 사용
    final client = mockAdapter.mockClient;

    final response = await client.get(Uri.parse('https://api.example.com/data'));

    if (response.statusCode == 200) {
      print('Success!');
    } else {
      print('Request failed :(');
    }
  }
}

위의 예제는 main() 함수에서 MockAdapter를 생성하고, 모든 HTTP 요청에 대해 가짜 응답을 반환하도록 설정합니다. 그리고 makeRequest() 함수 내에서 mockClient를 통해 http_mock_adapter를 사용하여 네트워크 요청을 수행합니다.

결론

http_mock_adapter를 플러터 앱 개발에 활용하면 네트워크 연결 상태를 시뮬레이션하고 테스트할 수 있습니다. 이를 통해 앱의 다양한 상황에 대응하는 로직을 검증하고, 안정적인 앱을 개발할 수 있습니다.

참고 자료