[flutter] 플러터에서의 http_mock_adapter를 활용한 오프라인 모드 테스트

플러터는 모바일 앱을 개발하기 위한 강력한 프레임워크입니다. 네트워크 통신이 필요한 앱에서는 서버와의 통신을 테스트하는 것이 중요한데, 가끔은 오프라인 상태에서의 앱의 동작을 테스트해야 할 때가 있습니다. 이럴 때 http_mock_adapter를 사용하면 간단하게 오프라인 모드 테스트를 할 수 있습니다.

http_mock_adapter란?

http_mock_adapter는 http 요청을 위조하는 라이브러리로, 실제 API와 통신하지 않고 미리 설정한 응답을 반환해줍니다. 이를 통해 서버의 응답을 모방하거나 오프라인 상태에서의 동작을 테스트할 수 있습니다.

설치

http_mock_adapter를 사용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. 아래와 같이 pubspec.yaml 파일에 의존성을 추가합니다:

dev_dependencies:
  http_mock_adapter: ^1.0.0

그리고 패키지를 업데이트합니다:

$ flutter packages get

사용 방법

  1. MockClient 생성
import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:http/http.dart' as http;

final MockAdapter _mockAdapter = MockAdapter();
final http.Client _httpClient = http.Client();
final http.Client _mockClient = _mockAdapter.mockClient(_httpClient);
  1. Mock Response 설정하기
import 'package:http_mock_adapter/http_mock_adapter.dart';

const int statusCode = 200;
const Map<String, dynamic> responseBody = {
  'message': 'Hello, mock!'
};
const headers = {
  'Content-Type': 'application/json',
};

_mockAdapter.onGet('/api/hello').reply(statusCode, responseBody, headers);

// GET /api/hello를 호출하면 statusCode 200과 responseBody를 반환
  1. 오프라인 모드 테스트
import 'package:http_mock_adapter/http_mock_adapter.dart';

_mockAdapter.onGet('/api/data').reply(200, []);

// API로부터 빈 배열을 받아온다고 가정

// 네트워크 연결이 되지 않은 상태에서 호출
final response = await _mockClient.get(Uri.parse('/api/data'));
print(response.statusCode); // 200
print(response.body); // []

위 코드에서는 /api/data에 GET 요청을 보내면 미리 설정한 응답으로 빈 배열이 반환됩니다. 이렇게 http_mock_adapter를 사용하여 저렇게 오프라인 모드 테스트를 할 수 있습니다.

결론

플러터에서는 http_mock_adapter를 사용하여 오프라인 상태에서의 앱 동작을 테스트할 수 있습니다. 이를 통해 미리 설정한 응답을 반환받아 오프라인 환경에서도 앱의 정상 동작을 검증할 수 있습니다. http_mock_adapter는 편리하게 사용할 수 있는 도구이므로, 개발자들은 이를 적극적으로 활용하여 앱의 테스트를 보완해 나갈 수 있습니다.