[flutter] 플러터에서의 http_mock_adapter를 활용한 사용자 인증 테스트

소개

Flutter는 모바일 애플리케이션 개발을 위한 인기있는 프레임워크입니다. Flutter는 다양한 플랫폼에서 동작하며, 네트워크 통신을 위해 일반적으로 HTTP 클라이언트를 사용합니다. 이러한 네트워크 통신은 종종 백엔드 API와의 상호작용을 통해 사용자 인증과 같은 중요한 작업을 처리합니다.

플러터에서는 http 패키지를 사용하여 네트워크 요청을 처리할 수 있습니다. 그러나 테스트 시나리오에서 실제 네트워크 요청을 보내면 테스트가 느려지고, 의존성이 있는 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 http_mock_adapter 패키지를 사용하여 테스트 중에 가짜 응답을 모의할 수 있습니다.

이번 블로그 포스트에서는 플러터에서 http_mock_adapter를 활용한 사용자 인증 테스트를 다루겠습니다.

http_mock_adapter 설치

먼저, http_mock_adapter 패키지를 설치해야 합니다. 우리는 pubspec.yaml 파일을 열고 아래 내용을 추가합니다:

dev_dependencies:
  http_mock_adapter: ^1.0.0

그런 다음 터미널에서 flutter pub get 명령을 실행하여 패키지를 설치합니다.

사용자 인증 테스트

사용자 인증 테스트를 위해 가장 간단한 예를 살펴보겠습니다. 가정하에, 우리는 사용자의 이메일과 비밀번호를 서버에 전송하여 인증 토큰을 받는 API를 호출하는 앱을 개발하고 있습니다. 다음과 같은 요청을 전송할 것입니다:

import 'package:http/http.dart';
import 'package:http_mock_adapter/http_mock_adapter.dart';

void main() {
  final mockAdapter = MockAdapter();

  final client = mockAdapter.httpClient;

  final email = "example@email.com";
  final password = "password123";

  final requestBody = {
    "email": email,
    "password": password,
  };

  final response = Response('{"token": "my_token"}', 200);

  mockAdapter.onPost('/api/auth/login').reply(200, response);

  // API 호출
  final apiResponse = await client.post('/api/auth/login', body: requestBody);

  // 응답 확인
  final apiResponseBody = jsonDecode(apiResponse.body);
  final token = apiResponseBody['token'];

  // assert
  assert(token == "my_token");
}

위 코드는 http_mock_adapter를 사용하여 서버로의 실제 네트워크 요청 대신 가짜 응답을 사용하여 사용자 인증 테스트를 수행합니다. MockAdapter를 생성하고 httpClient를 사용하여 가짜 네트워크 클라이언트를 생성합니다. 그런 다음 해당 클라이언트로 API 호출을 수행하고 가짜 응답을 설정하여 응답을 확인합니다.

이제 개발자는 API 호출에 대한 가짜 응답을 정확하게 모의할 수 있으므로, 실제 네트워크 의존성이 없이도 사용자 인증과 관련된 다양한 시나리오를 테스트할 수 있습니다.

결론

이번 블로그 포스트에서는 플러터에서 http_mock_adapter를 활용하여 사용자 인증 테스트를 수행하는 방법을 살펴보았습니다. 이를 통해 개발자는 실제 네트워크 요청을 보내지 않고도 사용자 인증과 같은 중요한 작업을 안전하게 테스트할 수 있습니다. http_mock_adapter는 유연하고 강력한 도구이며, 플러터 개발에서 테스트의 품질과 신속한 개발을 돕는 데 도움이 될 것입니다.

참고 자료