[flutter] 플러터에서의 http_mock_adapter를 이용한 푸시 알림 테스트

안녕하세요! 이번에는 플러터(Flutter)에서의 http_mock_adapter를 이용하여 푸시 알림을 테스트하는 방법에 대해 알아보겠습니다.

1. http_mock_adapter란?

http_mock_adapter는 플러터 앱 내에서 HTTP 요청을 가로채서 가짜 응답을 반환하는 라이브러리입니다. 이를 통해 실제 서버에 요청을 보내지 않고도 테스트를 할 수 있습니다.

2. 푸시 알림을 위한 http_mock_adapter 설정

먼저, http_mock_adapter를 사용하기 위해서는 http 패키지를 설치해야합니다. 아래의 명령어를 이용해서 패키지를 설치해주세요.

flutter pub add http

설치가 완료되면, 푸시 알림을 테스트하기 위한 main.dart 파일을 열고 다음과 같이 코드를 추가해주세요.

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:http_mock_adapter/http_mock_adapter.dart';

void main() {
  // 가짜 응답을 생성하는 HttpMockAdapter 객체 생성
  final mockAdapter = HttpMockAdapter();

  // 가짜 응답을 등록
  mockAdapter.onGet('/api/notifications')
      .reply(200, {'message': '푸시 알림 테스트입니다.'});

  // 플러터 앱을 실행
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '플러터 푸시 알림 테스트',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('플러터 푸시 알림 테스트'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // HTTP 요청을 mockAdapter로 보내고 응답을 받음
            final response = await http.get(Uri.parse('/api/notifications'));

            // 응답을 출력
            print(response.body);
          },
          child: Text('푸시 알림 테스트'),
        ),
      ),
    );
  }
}

3. 푸시 알림 테스트 실행

위의 코드에서는 /api/notifications 경로로 GET 요청을 보내면 가짜 응답으로 {'message': '푸시 알림 테스트입니다.'}를 반환합니다. 실제 푸시 알림을 테스트하기 위해선 해당 경로에 응답할 데이터를 등록해야합니다.

프로젝트를 실행하고 “푸시 알림 테스트”라는 버튼을 클릭하면 터미널에 {'message': '푸시 알림 테스트입니다.'}라는 메시지가 출력될 것입니다.

4. 결론

플러터에서의 http_mock_adapter를 사용하여 푸시 알림을 테스트하는 방법에 대해 알아보았습니다. 이를 통해 실제 서버에 의존하지 않고도 쉽게 테스트할 수 있습니다. 추가로 다른 경로에 대한 테스트를 위해 mockAdapter에 원하는 응답을 추가할 수도 있습니다.