[flutter] 플러터에서 http_mock_adapter를 이용한 로깅 테스트

이번에는 플러터 앱에서 네트워크 요청 로깅을 테스트하는 방법에 대해 알아보겠습니다. 플러터에서는 http 패키지를 통해 네트워크 요청을 처리할 수 있습니다. 우리는 http_mock_adapter 패키지를 사용하여 네트워크 요청을 모의(mock)할 것입니다.

http_mock_adapter란?

http_mock_adapter는 Flutter 애플리케이션에서 HTTP 요청을 모의(mock)하는 데 사용할 수 있는 패키지입니다. 이를 통해 실제 서버에 요청을 보내지 않고도 네트워크 요청 및 응답을 테스트할 수 있습니다.

http_mock_adapter 설치하기

먼저, http_mock_adapter 패키지를 설치해야 합니다. 프로젝트의 pubspec.yaml 파일에 아래와 같이 http_mock_adapter 패키지를 추가합니다.

dependencies:
  http_mock_adapter: ^1.0.0

그런 다음, 패키지를 가져옵니다.

import 'package:http_mock_adapter/http_mock_adapter.dart';

네트워크 요청 로깅 테스트하기

이제 http_mock_adapter를 사용하여 네트워크 요청 로깅을 테스트해 보겠습니다. 아래의 코드를 참고하세요.

void main() {
  final mockAdapter = MockAdapter();

  test('로그인 요청 테스트', () async {
    const url = 'https://api.example.com/login';
    const responseBody = 'success';
    const statusCode = 200;

    mockAdapter.onPost(url).reply(statusCode, responseBody);

    final httpClient = HttpWithInterceptor.build(
      interceptors: [mockAdapter],
    );

    final response = await httpClient.post(url);

    expect(response.statusCode, equals(statusCode));
    expect(response.body, equals(responseBody));

    mockAdapter.assertAllRequestsCompleted();
  });
}

위의 코드에서는 http_mock_adapterMockAdapter 클래스를 사용하여 네트워크 요청을 모의(mock)합니다. mockAdapter.onPost(url).reply(statusCode, responseBody) 메서드를 사용하여 특정 URL에 대한 POST 요청에 대한 모의 응답을 지정합니다. 테스트에서는 실제로 요청을 보내지 않고 httpClient를 통해 요청을 수행하고 응답을 확인합니다. 마지막으로 mockAdapter.assertAllRequestsCompleted()를 호출하여 테스트 중에 예상치 못한 요청이 없는지 확인합니다.

결론

상기한 방법을 통해 플러터 앱에서 http_mock_adapter를 사용하여 네트워크 요청 로깅을 테스트할 수 있습니다. 이를 통해 실제 서버에 의존하지 않고도 네트워크 요청에 대한 효율적인 테스트를 수행할 수 있습니다.

참고 자료: