[flutter] 플러터에서의 http_mock_adapter를 이용한 에러 상황 모의

일반적으로 플러터(Flutter) 앱 개발에는 API 호출 및 응답 처리가 포함됩니다. 이러한 API 호출 중에는 네트워크 오류나 서버에서의 에러 상황을 고려해야 할 때도 있습니다. 이를 위해 http_mock_adapter를 사용하여 플러터 앱에서 에러 상황을 모의해 볼 수 있습니다.

http_mock_adapter란?

http_mock_adapter는 플러터에서 테스트 및 디버깅을 위해 사용되는 패키지입니다. 이 패키지를 사용하면 실제 API 호출을 가로채고 가짜 응답을 반환할 수 있습니다. 또한 네트워크 상황을 모의하여 특정 에러 상황에 대한 처리를 확인할 수도 있습니다.

http_mock_adapter 설치

먼저, http_mock_adapter 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일의 dependencies 섹션에 다음과 같이 추가합니다:

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

설치를 마치면 패키지를 import 할 수 있습니다:

import 'package:http_mock_adapter/http_mock_adapter.dart';

에러 상황 모의하기

이제 http_mock_adapter를 사용하여 에러 상황을 모의해 보겠습니다. 아래의 코드는 GET 요청에 대해 404 에러를 반환하는 예제입니다:

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

void main() {
  group('API 테스트', () {
    // MockHttpClientAdapter 생성
    final mockAdapter = MockHttpClientAdapter();

    // 테스트할 API URL
    final apiUrl = 'https://api.example.com';

    test('404 에러 모의', () async {
      // MockHttpClientAdapter를 HttpClient로 설정
      http.Client client = http.Client();
      client = HttpClient(mockAdapter: mockAdapter);

      // Mock 응답 설정
      const errorResponse = '에러가 발생했습니다.';
      mockAdapter.onGet(apiUrl).reply(404, errorResponse);

      // API 호출
      final response = await client.get(Uri.parse(apiUrl));

      // 응답 확인
      expect(response.statusCode, 404);
      expect(response.body, errorResponse);
    });
  });
}

위 코드에서는 MockHttpClientAdapter를 사용하여 가짜 응답을 설정하고 에러 상황을 모의하고 있습니다. onGet 메서드를 사용하여 GET 요청에 대한 응답을 설정하고, reply 메서드를 통해 상태 코드와 응답 본문을 지정할 수 있습니다.

이제 http_mock_adapter를 사용하여 플러터 앱에서 에러 상황을 모의할 수 있습니다. 이를 통해 실제 API 호출이나 서버 상황을 재현하여 앱의 안정성을 더욱 개선할 수 있습니다.

참고 자료