[flutter] 플러터에서의 http_mock_adapter를 이용한 서버 응답 속도 제어

플러터에서 API 호출을 테스트할 때, 실제 서버에 요청을 보내기 보다는 가짜 응답을 반환하는 것이 효율적입니다. 이를 위해 http_mock_adapter 라이브러리를 사용하여 서버 응답을 가로챌 수 있습니다. 이번 블로그에서는 http_mock_adapter를 사용하여 플러터 앱에서 서버 응답 속도를 제어하는 방법을 알아보겠습니다.

1. http_mock_adapter 라이브러리 추가하기

먼저, http_mock_adapter 라이브러리를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 아래와 같이 의존성을 추가합니다.

dev_dependencies:
  http_mock_adapter: ^2.0.0

의존성을 추가한 후, 터미널에서 flutter pub get 명령을 실행하여 라이브러리를 다운로드합니다.

2. 가짜 응답 생성하기

http_mock_adapter를 사용하여 가짜 응답을 생성합니다. 아래는 예시입니다.

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

// MockClient 생성
final MockClient mockClient = MockClient();

// 가짜 응답 생성
final mockResponse = {
  'name': 'John Doe',
  'email': 'johndoe@example.com',
};

// 가짜 응답을 반환할 API 주소 설정
const apiURL = 'https://example.com/api';

// MockClient에 응답을 등록
mockClient.onGet(apiURL).reply(200, mockResponse);

// 실제로 API 호출해보기
final response = await http.get(Uri.parse(apiURL));

// 응답 확인
print(response.body);  // 가짜 응답인 {'name': 'John Doe', 'email': 'johndoe@example.com'} 출력

위의 예제에서는 MockClient를 사용하여 가짜 응답을 생성하고, mockClient.onGet() 메서드를 사용하여 API 주소에 해당하는 가짜 응답을 등록합니다. 그 후 실제로 API를 호출하면 가짜 응답이 반환됩니다.

3. 응답 속도 제어하기

http_mock_adapter를 사용하여 가짜 응답의 속도를 제어할 수 있습니다. 아래는 응답을 2초 후에 반환하는 예시입니다.

// 응답을 2초 후에 반환
mockClient.onGet(apiURL).timeout(const Duration(seconds: 2)).reply(200, mockResponse);

위의 예제에서는 timeout() 메서드를 사용하여 응답을 2초 후에 반환하도록 설정하였습니다.

4. 플러터 앱에서 사용하기

이제 가짜 응답을 사용하여 플러터 앱에서 API 호출을 테스트할 수 있습니다. http 패키지 대신 MockClient를 사용하여 API를 호출하면 가짜 응답이 반환됩니다.

final response = await mockClient.get(Uri.parse(apiURL));

위의 예제에서는 mockClient.get() 메서드를 사용하여 가짜 응답을 반환받습니다.

마무리

위의 단계를 따라가면서 플러터 앱에서 서버 응답 속도를 제어하는 방법을 알아보았습니다. http_mock_adapter를 사용하면 실제 서버에 의존하지 않고 가짜 응답을 생성하여 앱을 테스트할 수 있습니다. 이를 통해 테스트하는 동안 발생할 수 있는 오류나 지연을 미리 확인하고 대응할 수 있습니다.

더 많은 정보는 http_mock_adapter GitHub 페이지를 참조하시기 바랍니다.