[flutter] http_mock_adapter를 활용한 플러터 애플리케이션의 자원 관리 테스트 방법

플러터 애플리케이션을 개발할 때 네트워크 요청을 테스트해야 할 때가 있습니다. 이때 화면에 보여지는 데이터를 직접 서버에서 가져오는 대신 가상의 응답 데이터를 사용하여 테스트를 수행하고 싶을 수 있습니다. 이러한 시나리오에서 http_mock_adapter 패키지를 사용하면 손쉽게 가상의 응답 데이터를 생성하고 관리할 수 있습니다.

http_mock_adapter란?

http_mock_adapter는 플러터 애플리케이션에서 HTTP 요청에 대한 가상 응답 데이터를 제공하는 패키지입니다. 이 패키지를 사용하면 네트워크 요청을 하지 않고도 가상의 응답 데이터를 받을 수 있습니다. 따라서 테스트 환경에서 실제 서버와의 의존성을 제거하고 자원을 관리할 수 있습니다.

http_mock_adapter를 사용한 테스트 방법

  1. http_mock_adapter 패키지를 프로젝트에 추가합니다. pubspec.yaml 파일에 다음을 추가합니다:
dev_dependencies:
  http_mock_adapter: ^1.1.1
  1. http 클라이언트를 생성할 때 HttpClientAdapterMockAdapter를 사용합니다. 다음은 예시 코드입니다:
import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:http/http.dart' as http;

var mockAdapter = MockAdapter();

void main() {
  setUp(() {
    // 모든 요청에 대해 가상의 응답 데이터를 반환합니다.
    mockAdapter.onAny().reply(200, {'message': 'Mocked Response'});
  });

  test('테스트', () async {
    // 생성한 `MockAdapter`를 `HttpClient`에 연결합니다.
    var client = HttpClient()..badCertificateCallback = (cert, host, port) => true;
    client.findProxy = (uri) => 'PROXY localhost:3000';

    // 테스트 대상 코드에서 `http` 대신 `client`를 사용합니다.
    http.Client mockClient = http.Client();
    mockClient.close(); // 모든 요청이 완료될 때까지 기다립니다.

    // 테스트 코드 실행
  });

  tearDown(() {
    // 테스트 종료 후 `MockAdapter`를 초기화합니다.
    mockAdapter.reset();
  });
}

이 예시에서는 모든 요청에 대해 가상의 응답 데이터를 반환하는 설정을 하였습니다. 실제 테스트 시나리오에 맞게 가상의 응답 데이터를 설정하면 됩니다.

결론

http_mock_adapter를 사용하면 플러터 애플리케이션에서 네트워크 요청을 테스트하는 동안 가상의 응답 데이터를 제공할 수 있습니다. 이를 통해 실제 서버와의 의존성을 제거하고 자원을 관리할 수 있습니다. http_mock_adapter를 활용하여 효율적이고 안정적인 테스트를 수행해 보세요.


References