[Flutter] build_runner와 Mockito를 사용하여 lib 폴더에 Mock 파일 생성하기

[Flutter] build_runner와 Mockito를 사용하여 lib 폴더에 Mock 파일 생성하기

2023-07-03 hit count image

build_runner와 Mockito 패키지를 사용하여 lib 폴더에 Mock 파일을 생성하는 방법에 대해서 알아보도록 하겠습니다.

개요

Flutter에서는 build_runner 패키지를 사용하여 개발에 필요한 코드를 생성하곤 합니다. 특히, 테스트 코드에서는 Mockito를 사용하여 테스트용 Mock을 제작할 때 자주 사용합니다.

이번 블로그 포스트에서는 build_runnerMockito 패키지를 사용하여 lib 폴더에 Mock 파일을 생성하는 방법에 대해서 알아보도록 하겠습니다.

Lib 폴더에서 Mock 생성하기

보통 build_runnerMockito 패키지를 사용하여 Mock을 만들때에는 테스트용이므로, lib 폴더안에 파일에서는 사용할 수 없습니다. 하지만, 저처럼 다른 사용자를 위한 패키지를 만들때에는 다음과 같이 lib 폴더안 파일에서도 Mock을 사용할 때가 있습니다.

...
@GenerateMocks([
  HttpClient,
  HttpClientRequest,
  HttpClientResponse,
  HttpHeaders,
  StreamSubscription,
])
R runWithNetworkImages<R>(R Function() body) {
  return HttpOverrides.runZoned(
    body,
    createHttpClient: (_) => _createMockImageHttpClient(),
  );
}
...

이번 블로그 포스트에서는 이와 같이 lib 폴더안에 Mock을 생성하는 방법에 대해서 알아보도록 하겠습니다.

build.yaml 파일

build_runnerbuild.yaml 파일로 여러 설정을 할 수 있습니다. 이 build.yaml 파일을 사용하면 lib 폴더안에 있는 파일에서도 Mock을 생성할 수 있습니다.

그럼 lib 폴더안에 있는 파일에서도 Mock을 생성하기 위해, ./build.yaml 파일을 생성하고 다음과 같이 수정합니다.

targets:
  $default:
    builders:
      mockito|mockBuilder:
        generate_for:
          - 'lib/src/run_with_network_images.dart'

위와 같이 build_runnerMockito를 사용하여 Mock 파일을 만들 대상에 lib 폴더 안에 파일을 지정하면, lib 폴더 안에 있는 파일에서도 Mock을 생성할 수 있습니다.

완료

이것으로 build_runnerMockito 패키지를 사용하여 lib 폴더안에서도 Mock을 생성하는 방법에 대해서 알아보았습니다. 이와 같은 일이 자주 있지는 않지만, build.yaml 파일을 사용하여 build_runner를 설정할 수 있다는 점을 알아두면 좋을거 같습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts