[flutter] 플러터에서의 http_mock_adapter를 이용한 비디오 재생 테스트

플러터(Flutter)는 모바일 애플리케이션 개발을 위한 인기 있는 프레임워크입니다. 플러터를 사용하면 Android 및 iOS용 네이티브 애플리케이션을 빠르고 쉽게 개발할 수 있습니다. 이번 블로그 포스트에서는 플러터에서의 비디오 재생을 테스트하기 위해 http_mock_adapter를 사용하는 방법에 대해 알아보겠습니다.

http_mock_adapter란?

http_mock_adapter는 네트워크 요청을 가로채서 가짜 응답을 반환하는 Flutter 패키지입니다. 따라서 실제 서버에 요청을 보내지 않고도 테스트를 진행할 수 있습니다. 이를 이용하면 네트워크에 종속되지 않고도 실제 시나리오를 시뮬레이션하거나 오류 조건을 재현할 수 있습니다.

비디오 재생 테스트를 위한 http_mock_adapter 사용하기

우선 http_mock_adapter 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일을 열고 http 의존성 하위에 http_mock_adapter를 추가합니다. 그리고 다음 명령을 실행하여 패키지를 가져옵니다.

flutter pub get

이제 테스트 파일에서 http_mock_adapter를 import한 다음, MockHttpClient와 MockHttpClientRequest를 생성합니다. 이렇게 한 후에는 서버 요청과 응답을 만들어야 합니다.

import 'package:http_mock_adapter/http_mock_adapter.dart';

void main() {
  test('비디오 재생 테스트', () async {
    final mockAdapter = MockAdapter();

    // MockHttpClientRequest 생성
    final request = MockHttpClientRequest(
      '/api/video',
      method: 'GET',
    );
    
    // 서버 응답 생성
    final response = MockHttpResponse(
      {
        // 비디오 데이터
        'videoId': '12345',
        'title': '테스트 비디오',
        'url': 'https://example.com/video.mp4',
      },
      200,
    );

    // MockHttpClient에 요청과 응답 설정
    mockAdapter
        .onGet('/api/video')
        .reply(200, response.toString());

    // 테스트 코드 작성
    // 비디오 재생 로직 실행 및 assert문 작성

    mockAdapter.reset();
  });
}

테스트 코드에서는 MockHttpClientRequest를 생성하여 실제로 호출될 서버 요청을 만들고, MockHttpResponse를 사용하여 테스트에 필요한 응답을 생성합니다. 그런 다음 MockAdapter의 onGet('/api/video') 메서드를 사용하여 서버 요청과 응답을 연결합니다.

위의 예시에서는 GET 요청에 대한 응답을 설정했지만, http_mock_adapter는 GET, POST, PUT, DELETE 등 다양한 메서드에 대한 요청을 가로챌 수 있습니다. 예제에는 비디오 데이터가 포함되어 있으며, 실제 비디오 재생 로직을 실행하고 테스트 결과를 assert문으로 확인할 수 있습니다.

마지막으로, 테스트가 끝나면 mockAdapter.reset()을 호출하여 MockAdapter의 상태를 초기화해야 합니다.

결론

이번 블로그 포스트에서는 플러터에서의 비디오 재생 테스트를 위해 http_mock_adapter를 사용하는 방법에 대해 알아보았습니다. http_mock_adapter를 이용하면 네트워크 요청을 가로채서 가짜 응답을 반환할 수 있어서 테스트 시나리오를 재현하고 오류 조건을 테스트하는데 유용합니다. 플러터에서 네트워크 요청을 테스트하기 위해 http_mock_adapter를 활용해보세요!

References