[flutter] 플러터에서의 http_mock_adapter를 이용한 사진 텍스트 추출 테스트

이번 블로그 포스트에서는 플러터(Flutter)에서 http_mock_adapter를 활용하여 사진 텍스트를 추출하는 방법에 대해 알아보겠습니다.

플러터는 모바일 앱을 개발하기 위한 프레임워크로, 다양한 기능을 제공합니다. 그 중에서도 http를 통한 네트워크 통신은 많이 사용되는 기능 중 하나입니다. 하지만 네트워크 통신을 테스트할 때 서버 응답을 받기까지 기다려야 하고, 응답이 일관적이지 않을 수도 있습니다. 이런 경우에 http_mock_adapter를 사용하면 쉽게 테스트할 수 있습니다.

1. http_mock_adapter 패키지 추가하기

먼저, pubspec.yaml 파일에 http_mock_adapter 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 httphttp_mock_adapter를 추가해주세요.

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

추가한 후에는 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

2. http_mock_adapter를 사용하여 테스트하기

다음으로, http_mock_adapter를 사용하여 사진 텍스트를 추출하는 테스트를 진행해보겠습니다. 먼저, 필요한 라이브러리를 import합니다.

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

다음으로, 테스트를 작성합니다.

void main() {
  test('사진 텍스트 추출', () async {
    // MockClient 생성
    final client = MockClient();

    // Mock Response 설정
    final mockResponse = MockResponse(
      body: '{"text": "Hello, World!"}',
      statusCode: 200,
    );
    client.mock
      .expect(
        HttpMethod.get,
        'https://example.com/image',
      )
      .thenReturn(mockResponse);

    // 테스트할 함수 호출
    final result = await extractTextFromPhoto('https://example.com/image', client);

    // 결과 검증
    expect(result, equals('Hello, World!'));

    // Mock Response 검증
    client.mock.verify(
      HttpMethod.get,
      'https://example.com/image',
    );
  });
}

Future<String> extractTextFromPhoto(String url, http.Client client) async {
  final response = await client.get(Uri.parse(url));
  // 사진 텍스트 추출 로직 작성
  return response.body;
}

위 테스트 코드에서는 MockClient를 사용하여 네트워크 요청을 가로채고 모의 응답을 설정하고 있습니다. 이를 통해 실제 네트워크 요청 대신에 모의 응답을 사용하여 테스트할 수 있습니다.

3. 테스트하기

테스트를 실행하려면 터미널에서 다음 명령어를 실행합니다.

flutter test

테스트가 성공적으로 통과되면, 플러터에서 http_mock_adapter를 사용하여 사진 텍스트 추출 테스트가 완료됩니다.

이렇게 http_mock_adapter를 통해 네트워크 통신을 모의하여 테스트할 수 있습니다. 플러터 개발 시에 유용하게 활용할 수 있으니, 적극적으로 사용해보시기 바랍니다.

참고 자료