[flutter] 플러터에서 http_mock_adapter를 이용한 백엔드 서버 테스트

플러터는 크로스 플랫폼 앱 개발을 위한 프레임워크로, 백엔드 서버와 통신하는 앱을 개발할 때 HTTP 요청을 테스트해야 할 경우가 있습니다. 이때 자주 사용되는 도구 중 하나는 http_mock_adapter입니다. http_mock_adapter는 실제 HTTP 요청을 가로채고 테스트용 응답을 제공하여 백엔드 서버 없이도 테스트할 수 있게 해줍니다.

http_mock_adapter란?

http_mock_adapter는 플러터에서 HTTP 요청을 테스트하기 위한 패키지입니다. 이 패키지를 사용하면 실제 HTTP 요청을 보내지 않고도 가상의 응답을 보내서 앱의 HTTP 요청을 테스트할 수 있게 됩니다. 이를 통해 테스트 환경에서도 안정적으로 앱의 통신을 검증할 수 있습니다.

http_mock_adapter 설치하기

http_mock_adapterhttp 패키지와 함께 사용되므로, 먼저 http 패키지가 프로젝트에 설치되어 있어야 합니다. 아래의 명령어를 사용하여 http 패키지를 설치합니다.

flutter pub add http

설치가 완료되었다면 pubspec.yaml 파일에 http 패키지가 추가된 것을 확인할 수 있습니다.

그리고 http_mock_adapter 패키지를 아래의 명령어를 사용하여 설치합니다.

flutter pub add http_mock_adapter

이제 http_mock_adapter가 프로젝트에 설치되었습니다.

http_mock_adapter를 사용한 테스트

http_mock_adapter의 기능을 사용하여 백엔드 서버 테스트를 수행해보겠습니다. 아래의 예제 코드를 참고하여 테스트를 작성해보세요.

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

void main() {
  // 테스트할 HTTP 클라이언트 생성
  final MockClient mockClient = MockClient();

  test('백엔드 서버 테스트', () async {
    // 가상의 응답 정의
    final responseBody = '{"message": "Hello, World!"}';
    final responseHeaders = {'content-type': 'application/json'};
    mockClient.onGet('/api/hello').reply(200, responseBody, headers: responseHeaders);

    // HTTP 요청 보내기
    final url = Uri.parse('https://example.com/api/hello');
    final response = await mockClient.get(url);

    // 응답 확인
    expect(response.statusCode, 200);
    expect(response.headers['content-type'], 'application/json');
    expect(response.body, responseBody);
  });
}

위의 코드에서는 MockClient를 생성하여 가상의 응답을 정의한 뒤, get 메서드를 사용하여 HTTP GET 요청을 보내고 응답을 확인합니다. 이를 통해 백엔드 서버의 테스트를 실시할 수 있습니다.

결론

http_mock_adapter를 사용하면 플러터 앱에서 백엔드 서버 테스트를 손쉽게 수행할 수 있습니다. 이를 통해 앱의 통신 동작을 검증하고, 안정적인 앱을 개발할 수 있습니다.

참고자료