[flutter] 플러터에서의 http_mock_adapter를 이용한 소셜 미디어 연동 테스트

소개

앱을 개발하다보면 소셜 미디어 플랫폼과의 연동이 필요한 경우가 많습니다. 이때 테스트를 진행하기 위해서는 해당 플랫폼과의 통신을 모방할 수 있는 도구가 필요합니다. Flutter에서는 http_mock_adapter를 사용하여 테스트용 API 호출을 모방하고 응답을 조작할 수 있습니다. 이번 포스트에서는 플러터에서의 http_mock_adapter를 이용한 소셜 미디어 연동 테스트를 다룰 것입니다.

http_mock_adapter란?

http_mock_adapter는 Flutter 앱에서 네트워크 호출을 시뮬레이션하고 응답을 조작하는 데 사용되는 패키지입니다. MockClient를 사용하여 실제 서버와 통신하는 대신 미리 정의된 응답을 사용할 수 있습니다. 이를 통해 실제 API 호출이 필요한 상황에서도 테스트를 실시할 수 있습니다.

예제 코드

플러터에서 소셜 미디어 연동을 테스트하는 예제를 살펴보겠습니다. 우리는 페이스북 API를 사용하여 로그인을 시도하고, 페이스북에서 전달받은 토큰을 사용하여 사용자 정보를 가져오는 것을 가정합니다.

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

void main() {
  test('페이스북 연동 테스트', () async {
    final mockClient = MockHttpClient();
    final adapter = DioAdapter(client: mockClient);

    // 로그인 API 모의 응답 설정
    final loginResponseData = {'token': 'mock_token'};
    adapter.onPost('/login', (server) => server.reply(200, loginResponseData));

    // 사용자 정보 API 모의 응답 설정
    final userInfoResponseData = {'name': 'John Doe', 'email': 'johndoe@example.com'};
    adapter.onGet('/user', (server) => server.reply(200, userInfoResponseData));

    // 로그인 시도
    final loginResponse = await adapter.client.post('/login');
    expect(loginResponse.statusCode, 200);

    // 토큰을 사용하여 사용자 정보 요청
    final userInfoResponse = await adapter.client.get('/user');
    expect(userInfoResponse.statusCode, 200);
    expect(userInfoResponse.data, userInfoResponseData);
  });
}

이 예제에서는 MockHttpClient 클래스를 사용하여 가상의 HTTP 클라이언트를 생성합니다. DioAdapter 인스턴스를 생성하여 해당 클라이언트를 주입합니다. 그런 다음 onPostonGet 메소드를 사용하여 각각 로그인 API와 사용자 정보 API에 대한 가상 응답을 설정합니다. 마지막으로 client.postclient.get을 사용하여 가상 통신을 수행하고 응답을 확인합니다.

결론

http_mock_adapter를 사용하면 Flutter 앱에서 소셜 미디어 플랫폼과의 연동을 테스트할 수 있습니다. 이를 통해 통신을 시뮬레이션하고 원하는 응답을 정의할 수 있습니다. 이를 이용하여 앱의 안정성과 테스트 커버리지를 향상시킬 수 있습니다.

참고 자료