[flutter] 플러터에서의 http_mock_adapter를 활용한 네비게이션 기능 테스트

플러터(Flutter)는 다양한 기기에서 실행되는 네이티브 앱을 개발하기 위한 크로스 플랫폼 프레임워크입니다. 네트워크 통신을 테스트할 때는 주로 mocking을 사용하여 실제 서버 대신 가짜 응답을 받아볼 수 있습니다. 이번 글에서는 플러터에서 제공되는 http_mock_adapter 패키지를 활용하여 네비게이션 기능을 테스트하는 방법에 대해 알아보겠습니다.

http_mock_adapter란?

http_mock_adapterhttp 패키지와 함께 사용되는 테스트용 라이브러리입니다. 이 라이브러리를 사용하면 실제 네트워크 통신을 하지 않고도 가짜 응답을 주고받을 수 있습니다. 이를 통해 네트워크 통신이 필요한 기능들을 테스트할 때 좀 더 쉽고 안정적으로 작업할 수 있습니다.

네비게이션 기능 테스트

아래는 http_mock_adapter를 사용하여 네트워크 응답을 확인하는 네비게이션 기능 테스트 예제입니다.

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

void main() {
  group('네비게이션 테스트', () {
    late http.Client client;

    setUp(() {
      final mockAdapter = MockAdapter();
      client = http.Client();
      client.httpClientAdapter = mockAdapter;
    });

    test('정상적인 네비게이션 응답', () async {
      final mockResponse = '{
        "title": "테스트 제목",
        "description": "테스트 설명"
      }';

      final url = Uri.parse('https://example.com/navigation');

      final mockAdapter = client.httpClientAdapter as MockAdapter;
      mockAdapter.onGet(url).reply(200, mockResponse);

      final response = await client.get(url);

      expect(response.statusCode, 200);
      expect(response.body, mockResponse);
    });

    test('오류가 있는 네비게이션 응답', () async {
      final url = Uri.parse('https://example.com/navigation');

      final mockAdapter = client.httpClientAdapter as MockAdapter;
      mockAdapter.onGet(url).reply(404, 'Not Found');

      final response = await client.get(url);

      expect(response.statusCode, 404);
    });

    tearDown(() {
      client.close();
    });
  });
}

이 예제에서는 flutter_test 패키지를 사용하여 테스트를 작성하고, http_mock_adapter 패키지와 http 패키지를 함께 사용합니다. setUp 메서드에서는 MockAdapter를 생성하고 실제 http.Client 객체와 바인딩합니다. 그 후, 테스트 케이스에서 필요한 가짜 응답을 등록하고 client 객체를 사용하여 네트워크 요청을 보냅니다. 마지막으로 expect 메서드를 사용하여 응답을 검증합니다.

결론

플러터에서 http_mock_adapter를 활용하여 네비게이션 기능을 테스트할 수 있습니다. 이를 통해 네트워크 요청 시 발생할 수 있는 다양한 시나리오를 가상으로 만들어 테스트할 수 있습니다. http_mock_adapter의 다양한 기능과 메서드를 적절히 활용하여 테스트 코드를 작성해보세요.

참고 자료