개요
Flutter
에서는 build_runner
패키지를 사용하여 개발에 필요한 코드를 생성하곤 합니다. 특히, 테스트 코드에서는 Mockito
를 사용하여 테스트용 Mock
을 제작할 때 자주 사용합니다.
- build_runner: https://pub.dev/packages/build_runner
- Mockito: https://pub.dev/packages/mockito
이번 블로그 포스트에서는 build_runner
와 Mockito
패키지를 사용하여 lib
폴더에 Mock
파일을 생성하는 방법에 대해서 알아보도록 하겠습니다.
Lib 폴더에서 Mock 생성하기
보통 build_runner
와 Mockito
패키지를 사용하여 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_runner
는 build.yaml
파일로 여러 설정을 할 수 있습니다. 이 build.yaml
파일을 사용하면 lib
폴더안에 있는 파일에서도 Mock
을 생성할 수 있습니다.
그럼 lib
폴더안에 있는 파일에서도 Mock
을 생성하기 위해, ./build.yaml
파일을 생성하고 다음과 같이 수정합니다.
targets:
$default:
builders:
mockito|mockBuilder:
generate_for:
- 'lib/src/run_with_network_images.dart'
위와 같이 build_runner
가 Mockito
를 사용하여 Mock
파일을 만들 대상에 lib
폴더 안에 파일을 지정하면, lib
폴더 안에 있는 파일에서도 Mock
을 생성할 수 있습니다.
완료
이것으로 build_runner
와 Mockito
패키지를 사용하여 lib
폴더안에서도 Mock
을 생성하는 방법에 대해서 알아보았습니다. 이와 같은 일이 자주 있지는 않지만, build.yaml
파일을 사용하여 build_runner
를 설정할 수 있다는 점을 알아두면 좋을거 같습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.