이번 글에서는 Flutter 앱에서 권한 관리를 테스트하는 방법을 소개합니다. 특히, http_mock_adapter
라이브러리를 사용하여 네트워크 요청을 가로채고 테스트용 응답을 제공하는 방법을 알려드리겠습니다.
http_mock_adapter란?
http_mock_adapter
는 Flutter 애플리케이션에서 네트워크 요청을 가로채고 가짜 응답을 반환하는데 사용됩니다. 이를 통해 개발자는 외부 서버에 의존하지 않고 앱의 상황에 맞게 테스트를 수행할 수 있습니다.
설치하기
먼저, 프로젝트의 pubspec.yaml
파일에 http_mock_adapter
를 추가합니다:
dev_dependencies:
http_mock_adapter: ^2.0.0
그리고 pubspec.yaml
파일의 dependencies 섹션에 http
패키지를 추가합니다:
dependencies:
http: ^0.13.0
이제 터미널에서 다음 명령어를 실행하여 의존성을 업데이트합니다:
$ flutter pub get
테스트 작성하기
이제 테스트를 작성해보겠습니다. 예를 들어, 유저의 인증 토큰을 확인하는 API 호출을 테스트하고자 한다고 가정해봅시다.
import 'dart:convert';
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() {
test('API 테스트', () async {
// 가짜 응답 생성
final mockAdapter = MockAdapter();
mockAdapter.onGet('/user/auth', reply: 200, body: json.encode({'token': 'fake_token'}));
// HttpClient의 어댑터를 MockAdapter로 설정
final client = http.Client();
client.httpClientAdapter = mockAdapter;
// API 호출
final response = await client.get(Uri.parse('https://example.com/user/auth'));
// 응답 확인
expect(response.statusCode, 200);
expect(jsonDecode(response.body)['token'], 'fake_token');
});
}
위의 코드에서는 MockAdapter
를 사용하여 /user/auth
엔드포인트에 대한 GET 요청이 발생할 경우, 200 상태 코드와 {'token': 'fake_token'}
을 반환하는 가짜 응답을 생성하고 있습니다.
이제 테스트를 실행하고 통과하는지 확인할 수 있습니다.
결론
이번 글에서는 Flutter 앱에서 권한 관리를 테스트하기 위해 http_mock_adapter
를 사용하는 방법을 알아보았습니다. 이를 통해 외부 서버에 의존하지 않고 앱의 동작을 테스트할 수 있습니다. http_mock_adapter
를 통해 테스트 코드 작성을 보다 간편하게 하여 개발 생산성을 높일 수 있습니다.
더 자세한 내용은 http_mock_adapter GitHub 페이지를 참고하시기 바랍니다.