こんなAsyncNotifierProviderがあったとして
code.dart
class UserIdListNotifier extends AsyncNotifier<List<int>> {
@override
Future<List<int>> build() async {
return [1];
}
}
final UserIdListProvider = AsyncNotifierProvider<UserIdListNotifier, List<int>>(() {
return UserIdListNotifier();
});
こんなテストコードになります。
test_code.dart
void main() {
testWidgets('テストします',(WidgetTester tester) async {
await tester.pumpWidget(
ProviderScope(
overrides: [ // ここでProviderの戻り値をMockしたNotifierに設定する
UserIdListProvider.overrideWith(() {
return UserIdListNotifierMock();
}),
],
home: SomeWidget()
),
);
}
}
class UserIdListNotifierMock // NotifierをMockする
extends AsyncNotifier<List<int>>
with Mock
implements UserIdListNotifier {
@override
Future<List<int>> build() async {
return [1,2,3];
}
}
参考:https://riverpod.dev/docs/essentials/testing#mocking-notifiers
(非推奨らしいです...)