[flutter] 플러터에서 http_mock_adapter를 이용한 디바이스 정보 읽기 테스트

플러터는 다양한 기기 정보를 읽어야 하는 앱 개발에 매우 유용한 프레임워크입니다. 이때, http_mock_adapter를 사용하면 개발 중에 가짜 데이터로 디바이스 정보를 읽을 수 있습니다. 이 글에서는 플러터에서 http_mock_adapter를 이용하여 디바이스 정보를 테스트하는 방법에 대해 알아보겠습니다.

http_mock_adapter란?

http_mock_adapter는 테스트 서버가 없는 상황에서도 네트워크 요청을 가로채서 가짜 응답을 주는 라이브러리입니다. 이를 이용하면 실제 서버와 통신하지 않고도 가짜 데이터를 사용하여 테스트를 진행할 수 있습니다. 이 라이브러리를 이용하면 디바이스 정보를 불러오는 API와 통신하지 않고 가짜 데이터를 사용할 수 있습니다. 이를 통해 개발 도중에도 실제 데이터를 사용하지 않고도 안정적인 테스트가 가능해집니다.

http_mock_adapter 설치하기

우선, http_mock_adapter를 설치해야 합니다. pubspec.yaml 파일에 아래의 의존성을 추가해주세요.

dev_dependencies:
  http_mock_adapter: ^1.0.0

그리고 터미널에서 아래의 명령어를 실행하여 의존성을 설치합니다.

$ flutter pub get

http_mock_adapter로 디바이스 정보 읽기 테스트하기

이제 http_mock_adapter를 사용하여 플러터 앱에서 디바이스 정보를 읽는 테스트를 진행해보겠습니다.

import 'package:flutter_test/flutter_test.dart';
import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:my_app/utils/api_client.dart';

void main() {
  late DioAdapter dioAdapter;
  final apiClient = ApiClient();

  setUp(() {
    dioAdapter = DioAdapter();
    apiClient.client.httpClientAdapter = dioAdapter;
  });

  test('디바이스 정보를 API로부터 읽을 수 있는지 확인', () async {
    final deviceData = {
      'deviceName': 'Device X',
      'deviceType': 'Mobile',
      'platform': 'iOS',
    };

    dioAdapter.onGet('/device', (request) {
      return request.reply(200, deviceData);
    });

    final result = await apiClient.getDeviceInfo();
    expect(result.deviceName, 'Device X');
    expect(result.deviceType, 'Mobile');
    expect(result.platform, 'iOS');
  });
}

위의 코드는 테스트 코드입니다. 먼저, dioAdapter를 선언하고 ApiClient를 초기화합니다. 그 다음, setUp 함수에서 httpClientAdapterdioAdapter로 설정합니다.

test 함수에서는 가짜 디바이스 데이터를 생성하고, dioAdapter.onGet 메서드를 사용하여 /device 엔드포인트에 대한 GET 요청을 가로채고 가짜 응답을 생성합니다. 마지막으로, apiClient.getDeviceInfo를 호출하여 디바이스 정보를 가져와서 원하는 결과와 일치하는지 확인합니다.

결론

이렇게 플러터에서 http_mock_adapter를 이용하여 디바이스 정보를 읽는 테스트를 수행할 수 있습니다. 이를 통해 개발 도중에도 실제 API로부터 응답을 받지 않고도 안정적인 테스트를 할 수 있습니다. http_mock_adapter의 다양한 기능을 활용하여 효율적인 테스트 코드를 작성해보세요!