소개
이번 블로그 포스트에서는 Flutter 앱에서 http_mock_adapter
를 사용하여 바코드 스캔 테스트를 진행하는 방법을 알아보겠습니다. http_mock_adapter
는 HTTP 요청을 가로채서 가짜 응답을 제공하는 API Mocking 툴입니다. 이를 활용하면 서버와의 의존성 없이 앱의 HTTP 요청을 테스트할 수 있습니다.
설치
프로젝트의 pubspec.yaml
파일에 아래 의존성을 추가해주세요.
dev_dependencies:
http_mock_adapter: ^2.0.0
그리고 다음 명령어로 의존성을 설치해주세요.
flutter pub get
사용 방법
http
패키지를 사용하여 HTTP 요청을 보내는 코드를 작성합니다. 예를 들어, 바코드를 스캔한 후 서버로 전송하는 요청을 보내는 코드를 작성한다고 가정해봅시다.
import 'package:http/http.dart' as http;
...
void sendBarcode(String barcode) async {
String url = 'http://example.com/api/scanner';
Map<String, String> headers = {
'Content-Type': 'application/json',
};
String body = '{"barcode": "$barcode"}';
http.Response response = await http.post(url, headers: headers, body: body);
// 응답 처리 로직
}
test
폴더에barcodescanner_test.dart
파일을 생성하고 코드를 작성합니다.
import 'package:flutter_test/flutter_test.dart';
import 'package:http_mock_adapter/http_mock_adapter.dart';
import 'package:my_app/barcodescanner.dart';
void main() {
group('Barcode Scanner Test', () {
// Mock HTTP 요청을 위한 MockAdapter 인스턴스 생성
final mockAdapter = MockAdapter();
// 테스트에 사용할 가짜 응답 데이터
final fakeResponse = '{"status": "success"}';
setUp(() {
// 모든 HTTP 요청에 대해 가짜 응답 반환 설정
mockAdapter.onAny().reply(200, fakeResponse);
});
tearDown(() {
// MockAdapter 초기화
mockAdapter.reset();
});
test('Barcode scan and send request', () async {
final scanner = BarcodeScanner();
// 가짜 HTTP 요청을 가로채기 위해 MockAdapter 추가
scanner.client = http.ClientAdapter(MockClient(mockAdapter));
String barcode = "1234567890";
// 바코드 스캔 시나리오를 시뮬레이션
await scanner.scanBarcode(barcode);
// 예상한 HTTP 요청이 한 번 전송되었는지 확인
expect(mockAdapter.history.length, 1);
// 서버로 전달된 바코드가 예상한 값과 일치하는지 확인
expect(mockAdapter.history.first.body, '{"barcode": "$barcode"}');
});
});
}
위 코드에서는 http_mock_adapter
를 사용하여 가짜 HTTP 응답을 설정하고, MockAdapter
인스턴스를 사용하여 모든 HTTP 요청을 가로채서 설정한 응답을 제공합니다. 이렇게 설정된 MockAdapter를 http.ClientAdapter
클래스를 사용하여 http
패키지의 HTTP 클라이언트에 연결합니다.
-
예상한 바코드 스캔 시나리오를 시뮬레이션하는
scanBarcode
메서드를 구현합니다. 이 메서드에서http
패키지를 사용하여 서버에 요청을 보내고, 테스트할 때 가짜 응답이 반환되는지 확인할 수 있습니다. -
flutter test
명령어를 실행하여 테스트를 수행합니다.expect
문을 사용하여 예상한 결과를 검증할 수 있습니다.
결론
이번 블로그 포스트에서는 http_mock_adapter
를 사용하여 Flutter 앱에서 바코드 스캔 테스트를 진행하는 방법을 알아보았습니다. 이를 통해 서버와의 의존성 없이 앱의 HTTP 요청을 테스트할 수 있게 되었습니다. http_mock_adapter
는 다양한 HTTP 요청 시나리오를 시뮬레이션하는 데 유용한 도구이므로, 앱 개발 및 테스트에 적극적으로 활용해보시기 바랍니다.