[flutter] 플러터에서 http_mock_adapter를 이용한 빌드 시간 단축 테스트

이번 블로그 포스트에서는 플러터(Flutter)에서 http_mock_adapter를 사용하여 빌드 시간을 단축하는 방법에 대해 알아보겠습니다.

1. http_mock_adapter 소개

http_mock_adapter는 플러터 애플리케이션에서 네트워크 호출을 가로채고 가짜 응답을 반환하는 라이브러리입니다. 이를 통해 애플리케이션 개발 단계에서 네트워크 호출에 대한 응답을 고정할 수 있으므로 테스트를 진행하기에 편리합니다.

2. http_mock_adapter 설치하기

플러터 프로젝트에서 http_mock_adapter를 사용하기 위해 다음과 같이 의존성을 추가해야 합니다.

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.0

dev_dependencies:
  http_mock_adapter: ^1.0.2

의존성을 추가한 후 터미널에서 flutter pub get을 실행하여 의존성을 설치합니다.

3. http_mock_adapter를 통한 테스트 설정

테스트를 위해 HttpClient의 인스턴스를 생성하고 http_mock_adapter의 HttpMockAdapter로 래핑합니다. 그런 다음 HttpMockAdapter를 통해 응답해야 하는 요청에 대한 가짜 응답을 지정할 수 있습니다.

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

void main() {
  final client = HttpClient()..addInterceptor(MockAdapter());
  final http = MockAdapter().createHttpClient();

  // 가짜 응답 지정
  http
      .onGet('/api/data')
      .reply(200, {"message": "Mock data"}, headers: {'content-type': 'application/json'});

  // 테스트 코드 작성
}

위 코드에서는 ‘/api/data’로 GET 요청이 오면 200 상태 코드와 함께 가짜 응답을 반환합니다. 응답의 내용과 헤더를 지정할 수 있으며, 필요한 경우 다양한 HTTP 메서드에 대한 가짜 응답을 추가로 지정할 수 있습니다.

4. 테스트 코드 작성

가짜 응답을 설정한 후, 테스트 코드에서는 이를 활용하여 네트워크 호출을 모의하는 것이 가능해집니다.

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('Mocked network call test', () async {
    final http = MockAdapter().createHttpClient();

    http
        .onGet('/api/data')
        .reply(200, {"message": "Mock data"}, headers: {'content-type': 'application/json'});

    final response = await http.get(Uri.parse('/api/data'));

    expect(response.statusCode, 200);
    expect(response.headers['content-type'], 'application/json');
    expect(response.body, '{"message": "Mock data"}');
  });
}

위의 테스트 코드에서는 ‘/api/data’로 GET 요청을 생성하고 가짜 응답을 받아와, 응답의 상태 코드, 헤더, 본문을 검증합니다. 이를 통해 테스트 중에 실제로 네트워크 호출을 하지 않고도 원하는 응답을 받을 수 있습니다.

5. 빌드 시간 단축 테스트

실제로 http_mock_adapter를 사용하여 테스트를 진행하면 빌드 시간을 단축할 수 있습니다. 모의된 응답을 받아올 때 네트워크 통신이 필요없이 가짜 응답을 사용하므로, 네트워크 호출에 따른 대기 시간을 없앨 수 있습니다.

또한, 특정 시나리오에 대한 테스트를 진행하기 위해 가짜 응답을 자유롭게 설정하고 변경할 수 있다는 장점도 있습니다.

6. 결론

이번에는 플러터에서 http_mock_adapter를 사용하여 빌드 시간을 단축하는 방법에 대해 알아보았습니다. http_mock_adapter를 사용하면 네트워크 호출을 가로채고 가짜 응답을 반환하여 테스트를 진행할 수 있습니다. 이를 통해 빌드 시간을 단축하고 원하는 시나리오에 대해 테스트를 자유롭게 진행할 수 있습니다.