[flutter] 플러터에서의 http_mock_adapter 사용 방법

이번 포스트에서는 Flutter 애플리케이션에서 API 요청을 모의하는 방법에 대해 알아보겠습니다. 이를 위해 http_mock_adapter 패키지를 사용할 것입니다. http_mock_adapter는 플러터 애플리케이션에서 HTTP 요청을 가로채고 가짜 응답을 반환하는 것을 도와줍니다. 이를 통해 개발자는 서버와의 의존성 없이 애플리케이션을 테스트할 수 있습니다.

1. http_mock_adapter 패키지 추가

먼저, http_mock_adapter 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일을 열고 dependencies 섹션에 다음과 같이 패키지를 추가합니다:

dependencies:
  http: ^0.13.0
  http_mock_adapter: ^1.0.0

프로젝트 루트에서 flutter pub get 명령어를 실행하여 패키지를 다운로드합니다.

2. http_mock_adapter 설정

다음으로, http 패키지에서 제공하는 HttpClient 대신 MockHttpClient를 사용하기 위해 http_mock_adapter를 설정해야 합니다. 앱의 main.dart 파일에서 다음과 같이 설정할 수 있습니다:

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

void main() {
  // 실제 응답 또는 가짜 응답을 전달할 MockHttpClient 인스턴스를 생성합니다.
  final mockClient = MockHttpClient();

  // 앱에서 사용하는 http 패키지의 원래 Factory 함수를 대체합니다.
  http.Client = mockClient;

  // 앱을 실행합니다.
  runApp(MyApp());
}

위의 코드는 http 패키지의 ClientMockHttpClient로 대체하는 부분입니다.

3. API 모의 응답 설정

이제 API 요청에 대한 모의 응답을 설정해보겠습니다. 예를 들어, GET 요청에 대해 다음과 같은 응답을 반환하도록 설정하고 싶다고 가정해봅시다:

final mockResponse = {
  'id': 1,
  'name': 'John Doe',
  'email': 'johndoe@example.com',
};

mockClient
  .onGet('/users/1')
  .reply(200, mockResponse);

위의 코드에서는 /users/1 경로에 대한 GET 요청에 대한 가짜 응답을 설정하고 있습니다. 응답으로는 200 상태 코드와 mockResponse 변수에 지정된 데이터를 반환합니다.

4. 테스트 실행

이제 플러터 애플리케이션을 실행하여 모의 응답을 확인할 수 있습니다. 이전에 설정한 가짜 응답을 받기 위해 http.get() 메서드를 호출해보세요. 예를 들어:

final url = Uri.parse('https://api.example.com/users/1');
final response = await http.get(url);

print(response.statusCode); // 200
print(response.body); // {"id": 1, "name": "John Doe", "email": "johndoe@example.com"}

위의 코드는 설정한 모의 응답을 받아와 상태 코드와 응답 본문을 출력합니다.

결론

이제 애플리케이션에서 API 요청을 모의하는 방법을 알게 되었습니다. http_mock_adapter를 사용하면 서버와의 의존성 없이 애플리케이션을 테스트할 수 있습니다. 따라서 테스트 주도 개발(TDD) 방법론을 따르는 개발자들에게 특히 유용하다고 할 수 있습니다.

더 많은 정보와 예제 코드는 http_mock_adapter GitHub 페이지를 참조하세요.