[flutter] 플러터에서의 http_mock_adapter를 이용한 웹뷰 테스트

소개

웹뷰 테스트는 애플리케이션에서 웹 페이지를 로드하고 상호 작용할 수 있는 중요한 기능입니다. 하지만 대부분의 애플리케이션은 외부 API로부터 데이터를 가져와야 하기 때문에, API 호출을 테스트하는 것도 매우 중요합니다. 이때 http_mock_adapter라이브러리를 사용하면 플러터에서 웹뷰 테스트를 할 때 API 호출을 가짜 응답으로 대체할 수 있습니다.

http_mock_adapter란?

http_mock_adapter는 네트워크 요청을 가로채고 가짜 응답을 반환해주는 플러터용 HTTP 클라이언트 모의 라이브러리입니다. 이 라이브러리를 사용하면 실제 API 호출 없이 애플리케이션의 네트워크 요청을 테스트할 수 있습니다.

웹뷰 테스트를 위한 http_mock_adapter 사용하기

1. http 패키지 및 http_mock_adapter 패키지 설치하기

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

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3
  http_mock_adapter: ^1.0.0

설치를 완료하려면 터미널에서 flutter pub get 명령을 실행하세요.

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

테스트 코드에서 http_mock_adapter를 사용하려면, HttpMockAdapter를 생성하고 MockHttpClient로 래핑한 다음 웹뷰 객체에 클라이언트를 설정해야 합니다. 아래의 예제 코드를 참고하세요.

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() {
  // 웹뷰 테스트를 위한 MockHttpClient 생성
  final mockClient = MockHttpClient();

  // 가짜 응답 설정하기
  mockClient
      .onGet(Uri.parse('https://api.example.com/data'))
      .reply(200, {'message': 'Mocked response'});

  // 플러터 애플리케이션 실행하기
  runApp(MyApp(mockClient: mockClient));
}

class MyApp extends StatelessWidget {
  final http.Client mockClient;

  const MyApp({Key key, this.mockClient}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    // 웹뷰에 MockHttpClient 설정하기
    final webView = WebView(
      initialUrl: 'https://example.com',
      javascriptMode: JavascriptMode.unrestricted,
      // MockHttpClient를 사용하기 위해 HttpClient를 설정한다.
      httpClient: mockClient,
    );

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('WebView Test'),
        ),
        body: Center(
          child: webView,
        ),
      ),
    );
  }
}

위 코드에서는 http_mock_adapter를 사용하여 MockHttpClient를 생성하고 웹뷰에 설정하고 있습니다. mockClient 객체를 사용하여 API 호출을 가짜 응답으로 대체할 수 있습니다.

3. 테스트 실행 및 결과 확인하기

테스트를 실행하고 웹뷰 페이지에서 API 호출을 수행합니다. http_mock_adapter에서 설정한 가짜 응답이 웹뷰에서 정상적으로 처리되는지 확인하세요.

결론

플러터에서 웹뷰와 API 테스트를 동시에 하려면 http_mock_adapter를 사용하는 것이 유용합니다. 이 라이브러리를 사용하면 외부 API 호출을 가짜 응답으로 대체하여 웹뷰 테스트를 더욱 쉽고 효과적으로 수행할 수 있습니다.