이번 글에서는 플러터(Flutter)에서 HTTP 통신을 모의(Mock)하는 http_mock_adapter를 활용하여 웹 스크래핑 테스트를 어떻게 수행할 수 있는지 알아보겠습니다.
1. http_mock_adapter란?
http_mock_adapter는 플러터에서 HTTP 통신을 모의하기 위한 패키지입니다. 이 패키지를 사용하면 서버와의 통신 없이 가상의 응답을 받을 수 있습니다. 이를 통해 웹 스크래핑과 같은 작업을 테스트할 때 실제 서버와의 통신을 필요로하지 않고도 개발 및 디버깅을 용이하게 할 수 있습니다.
2. http_mock_adapter 설치하기
플러터 프로젝트에서 http_mock_adapter를 사용하기 위해서는 먼저 패키지를 설치해야 합니다. pubspec.yaml
파일을 열고 http
와 함께 http_mock_adapter
를 추가합니다.
dependencies:
flutter:
sdk: flutter
http: ^0.13.2
http_mock_adapter: ^1.3.0
그리고 터미널에서 다음 명령어를 실행하여 패키지를 설치합니다.
flutter pub get
3. http_mock_adapter를 사용한 웹 스크래핑 테스트
이제 http_mock_adapter를 사용하여 플러터 애플리케이션에서 웹 스크래핑 테스트를 수행해 보겠습니다.
먼저, HTTP 통신을 위해 http
패키지와 http_mock_adapter
패키지를 import합니다.
import 'package:http/http.dart' as http;
import 'package:http_mock_adapter/http_mock_adapter.dart';
다음으로, MockClient를 생성하고 이를 사용하여 http 통신을 수행합니다.
void main() {
final mockClient = MockClient();
test('웹 스크래핑 테스트', () async {
// Mock 데이터 정의
final mockData = """
<html>
<body>
<h1>테스트 페이지</h1>
<p>환영합니다!</p>
</body>
</html>
""";
// Mock 응답 설정
mockClient
.whenGet('https://example.com')
.thenResponse(http.Response(mockData, 200));
// 웹 스크래핑 테스트
final response = await http.get(Uri.parse('https://example.com'));
expect(response.statusCode, 200);
expect(response.body, contains('<h1>테스트 페이지</h1>'));
expect(response.body, contains('<p>환영합니다!</p>'));
});
}
위 코드에서는 MockClient 객체를 생성하고, Mock 데이터를 정의한 후에 Mock 응답 설정을 추가합니다. 그리고 http.get 메서드를 사용하여 웹 페이지를 요청하고, 응답 결과를 테스트합니다.
4. 결론
플러터에서 HTTP 통신을 모의(Mock)하기 위해 http_mock_adapter를 활용하는 방법에 대해 알아보았습니다. 이를 통해 웹 스크래핑과 같은 테스트를 간편하게 수행할 수 있으며, 서버와의 의존성을 없애고 신속하게 개발 및 디버깅을 할 수 있습니다. 사용법에 대해 익숙해지고 다양한 테스트 시나리오에 적용해보세요!