플러터(Flutter)에서는 HTTP 요청 및 응답에 대한 단위 테스트를 진행할 수 있는 다양한 패키지들이 존재합니다. 그 중에서도 http_mock_adapter
는 HTTP 요청을 가로채서 모의 응답을 반환하는 데에 특화된 패키지입니다. 이 패키지를 활용하면 실제 서버에 의존하지 않고도 파일 업로드와 같은 기능을 테스트할 수 있습니다.
본 포스트에서는 http_mock_adapter
를 통해 플러터 애플리케이션에서 파일 업로드를 테스트하는 방법을 알아보겠습니다.
1. http_mock_adapter
패키지 추가하기
테스트를 위해 http_mock_adapter
패키지를 프로젝트에 추가해야 합니다. 프로젝트의 pubspec.yaml
파일에 다음과 같이 패키지를 추가합니다:
dev_dependencies:
http: ^0.13.3
http_mock_adapter: ^1.1.1
프로젝트를 업데이트하기 위해 터미널에서 다음 명령어를 실행합니다:
flutter pub get
2. 파일 업로드 테스트하기
이제 실제로 파일 업로드를 테스트하기 위해 http_mock_adapter
를 사용하는 방법을 살펴보겠습니다.
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() {
final mockClient = MockClient();
test('파일 업로드 테스트', () async {
final file = File('path/to/file.jpg');
final request = http.MultipartRequest('POST', Uri.parse('http://example.com/upload'));
request.files.add(await http.MultipartFile.fromPath('file', file.path));
final response = http.Response('{"success": true}', 200);
mockClient.onPost('http://example.com/upload').reply((request) => response);
final result = await request.send();
expect(result.statusCode, 200);
expect(await result.stream.bytesToString(), '{"success": true}');
});
}
위의 코드에서는 http_mock_adapter
를 활용하여 파일 업로드를 테스트합니다. 테스트 코드는 flutter_test
패키지 안에 있는 test()
함수를 통해 작성됩니다.
mockClient
객체를 생성하여MockClient()
클래스의 인스턴스로 초기화합니다.http.MultipartRequest
를 사용하여 파일 업로드 요청을 생성하고 파일을 첨부합니다.mockClient
를 통해onPost()
메서드를 호출하여 특정 URL에 대한 모의 응답을 설정합니다.request.send()
메서드를 호출하여 파일 업로드 요청을 실행합니다.- 예상하는 결과인 상태 코드와 응답 메시지를 검증하는
expect()
함수를 사용합니다.
3. 결론
이번 포스트에서는 http_mock_adapter
를 사용하여 플러터 애플리케이션에서 파일 업로드를 테스트하는 방법을 알아보았습니다. 이를 활용하면 실제 서버를 이용하지 않고도 HTTP 요청 및 응답을 모의하여 테스트할 수 있습니다. http_mock_adapter
를 사용하여 테스트 코드 작성 시 효율성과 안정성을 높일 수 있습니다.
더 자세한 내용은 http_mock_adapter의 공식 GitHub 저장소를 참고하시기 바랍니다.