[flutter] 플러터에서의 http_mock_adapter를 활용한 캘린더 기능 테스트
이번 블로그 포스트에서는 플러터(Flutter) 앱에서 HTTP 요청을 모킹하기 위해 http_mock_adapter
패키지를 사용하여 캘린더 기능을 테스트하는 방법에 대해 살펴보겠습니다.
http_mock_adapter
란?
http_mock_adapter
는 HTTP 클라이언트로 사용되는 http
패키지와 함께 사용할 수 있는 패키지입니다. 이 패키지를 사용하면 실제 서버 요청을 보내지 않고도 HTTP 요청을 모킹하여 테스트할 수 있습니다. 이를 통해 개발자는 외부 의존성 없이 앱의 기능을 효과적으로 테스트할 수 있습니다.
캘린더 기능 테스트
먼저, http_mock_adapter
패키지를 프로젝트에 추가해야 합니다. pubspec.yaml
파일에 아래의 의존성을 추가하세요.
dependencies:
http_mock_adapter: ^1.2.0
다음으로, HTTP 요청을 모킹하는 테스트를 작성해보겠습니다. 아래의 예시 코드는 캘린더에서 이벤트를 가져오는 HTTP GET 요청을 모킹하는 테스트입니다.
import 'package:flutter_test/flutter_test.dart';
import 'package:http/http.dart' as http;
import 'package:http_mock_adapter/http_mock_adapter.dart';
void main() {
group('Calendar API Test', () {
test('Fetch events from API', () async {
// 모킹된 클라이언트 생성
final client = MockHttpClient();
// 모킹된 클라이언트를 사용하여 테스트하고자 하는 API 요청을 모킹
final mockResponse = '''
{
"events": [
{
"id": 1,
"title": "Meeting",
"date": "2022-01-01"
},
{
"id": 2,
"title": "Party",
"date": "2022-01-02"
}
]
}
''';
client.onGet('/events').reply(200, mockResponse);
// 사용자 정의 함수를 호출하여 모킹된 HTTP 응답을 검증
final response = await http.get(Uri.parse('https://example.com/events'));
expect(response.statusCode, 200);
// 받아온 응답을 파싱하고 필요한 데이터를 검사
final responseBody = jsonDecode(response.body);
expect(responseBody['events'].length, 2);
expect(responseBody['events'][0]['title'], 'Meeting');
expect(responseBody['events'][1]['title'], 'Party');
});
});
}
위의 코드에서는 MockHttpClient
를 사용하여 모킹된 클라이언트를 생성하고, client.onGet('/events').reply(200, mockResponse)
를 사용하여 /events
경로로의 GET 요청에 대한 응답을 모킹합니다. 그리고 http.get
을 통해 실제 요청을 보내고 응답을 검사합니다.
결론
http_mock_adapter
를 사용하면 플러터 앱에서 HTTP 요청을 모킹하여 효과적으로 테스트할 수 있습니다. 이를 통해 외부 의존성 없이 앱의 기능을 안정적으로 개발할 수 있습니다. 더 자세한 내용은 공식 문서를 참고하시기 바랍니다.