[flutter] 플러터에서 http_mock_adapter를 이용한 권한 관리 테스트

이번 글에서는 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 페이지를 참고하시기 바랍니다.