Flutter에서 Shared Preferences를 포함하여 테스팅을 진행할 때, 아래와 같이 코드를 작성하고 실행하면 아무런 에러나 경고 없이 코드가 돌아가지만 계속 로딩만 될 뿐 실제 진행되지는 않았습니다.
testWidgets('SharedPreferences Test', (WidgetTester tester) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await tester.pumpWidget(
// 이하 개별 code
);
});
이때는 SharedPreferences.getInstance()
이전에 아래와 같이 초기 Mock 값을 넣어주면 무한 로딩 없이 작동하며, 해당 Mock 데이터를 기반으로 테스팅이 정상적으로 진행됩니다.
SharedPreferences.setMockInitialValues({});
testWidgets('SharedPreferences Test', (WidgetTester tester) async {
SharedPreferences.setMockInitialValues({});
SharedPreferences prefs = await SharedPreferences.getInstance();
await tester.pumpWidget(
// 이하 개별 code
);
});
종합적으로 간단하게 정리하면, 테스트 환경 당 예상되는 데이터 상태를 정의하고 개별적으로 값을 제어할 수 있으므로 테스트를 효과적으로 수행할 수 있도록 하기 위함입니다.