[flutter] 플러터에서의 http_mock_adapter를 활용한 소셜 로그인 테스트

소개

플러터는 크로스 플랫폼 앱 개발을 위한 프레임워크로, 많은 기능과 라이브러리를 제공합니다. 이 중에서도 네트워크 통신을 위한 http 패키지는 플러터 앱 개발에서 핵심적인 역할을 담당하고 있습니다. 특히, 서버와의 API 통신을 테스트해야 하는 경우, 실제 서버에 통신하는 것은 번거롭고 비용이 많이 들 수 있습니다.

이런 경우에 유용하게 사용할 수 있는 툴이 바로 http_mock_adapter입니다. 이 라이브러리를 사용하면 실제 서버 대신 테스트용 데이터를 반환하는 가짜 서버를 만들어 테스트를 수행할 수 있습니다.

설치

http_mock_adapter는 http 패키지의 MockClient를 기반으로 동작합니다. 따라서 http 패키지와 함께 설치해야 합니다.

dependencies:
  http: ^package_version
  http_mock_adapter: ^package_version

사용 방법

먼저, http 패키지와 http_mock_adapter를 import 합니다.

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

다음으로, 테스트에 사용할 특정 API 요청에 대한 MockResponse를 설정합니다.

var mockAdapter = MockHttpAdapter();
mockAdapter.onGet('/api/login').reply(200, {'message': 'success'});

위의 예시 코드에서는 ‘/api/login’ 경로로 GET 요청이 들어오면 200 상태 코드와 {‘message’: ‘success’}라는 응답 데이터를 반환하도록 설정했습니다.

테스트 메소드에서는 기존의 http 패키지의 클라이언트 대신에 mockAdapter를 사용하여 테스트를 진행합니다.

test('소셜 로그인 API 호출 테스트', () async {
  var client = http.Client();
  client = mockAdapter.attach(client);

  var response = await client.get(Uri.parse('/api/login'));
  
  expect(response.statusCode, 200);
  expect(jsonDecode(response.body)['message'], 'success');
});

위의 예시 코드에서는 mockAdapter.attach(client)를 사용하여 실제 http 클라이언트를 mockAdapter로 대체하고, 가짜 서버로 요청을 보내는 것을 확인할 수 있습니다. 다음으로, 반환된 응답 데이터를 확인하기 위해 response.statusCoderesponse.body를 이용하여 검증을 수행합니다.

결론

http_mock_adapter를 사용하면 플러터에서 서버와의 통신을 테스트할 때, 실제 서버로 통신하는 것과 비교하여 효율적으로 테스트를 진행할 수 있습니다. 가짜 서버를 구축하여 원하는 응답 데이터를 반환하도록 설정하는 것만으로도 테스트를 원활하게 수행할 수 있으며, 이는 개발자들에게 큰 도움이 될 것입니다.