이번 포스트에서는 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 패키지의 Client를 MockHttpClient로 대체하는 부분입니다.
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 페이지를 참조하세요.