[flutter] 플러터에서의 http_mock_adapter를 활용한 웹 스크래핑 테스트

이번 글에서는 플러터(Flutter)에서 HTTP 통신을 모의(Mock)하는 http_mock_adapter를 활용하여 웹 스크래핑 테스트를 어떻게 수행할 수 있는지 알아보겠습니다.

1. http_mock_adapter란?

http_mock_adapter는 플러터에서 HTTP 통신을 모의하기 위한 패키지입니다. 이 패키지를 사용하면 서버와의 통신 없이 가상의 응답을 받을 수 있습니다. 이를 통해 웹 스크래핑과 같은 작업을 테스트할 때 실제 서버와의 통신을 필요로하지 않고도 개발 및 디버깅을 용이하게 할 수 있습니다.

2. http_mock_adapter 설치하기

플러터 프로젝트에서 http_mock_adapter를 사용하기 위해서는 먼저 패키지를 설치해야 합니다. pubspec.yaml 파일을 열고 http와 함께 http_mock_adapter를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.2
  http_mock_adapter: ^1.3.0

그리고 터미널에서 다음 명령어를 실행하여 패키지를 설치합니다.

flutter pub get

3. http_mock_adapter를 사용한 웹 스크래핑 테스트

이제 http_mock_adapter를 사용하여 플러터 애플리케이션에서 웹 스크래핑 테스트를 수행해 보겠습니다.

먼저, HTTP 통신을 위해 http 패키지와 http_mock_adapter 패키지를 import합니다.

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

다음으로, MockClient를 생성하고 이를 사용하여 http 통신을 수행합니다.

void main() {
  final mockClient = MockClient();

  test('웹 스크래핑 테스트', () async {
    // Mock 데이터 정의
    final mockData = """
      <html>
        <body>
          <h1>테스트 페이지</h1>
          <p>환영합니다!</p>
        </body>
      </html>
    """;

    // Mock 응답 설정
    mockClient
      .whenGet('https://example.com')
      .thenResponse(http.Response(mockData, 200));

    // 웹 스크래핑 테스트
    final response = await http.get(Uri.parse('https://example.com'));
    expect(response.statusCode, 200);
    expect(response.body, contains('<h1>테스트 페이지</h1>'));
    expect(response.body, contains('<p>환영합니다!</p>'));
  });
}

위 코드에서는 MockClient 객체를 생성하고, Mock 데이터를 정의한 후에 Mock 응답 설정을 추가합니다. 그리고 http.get 메서드를 사용하여 웹 페이지를 요청하고, 응답 결과를 테스트합니다.

4. 결론

플러터에서 HTTP 통신을 모의(Mock)하기 위해 http_mock_adapter를 활용하는 방법에 대해 알아보았습니다. 이를 통해 웹 스크래핑과 같은 테스트를 간편하게 수행할 수 있으며, 서버와의 의존성을 없애고 신속하게 개발 및 디버깅을 할 수 있습니다. 사용법에 대해 익숙해지고 다양한 테스트 시나리오에 적용해보세요!