0

my test is throwing an exception because there is a StateNotifierProvider inside which is not overridden. for a regular Provider, i can override it using providerContainer, but for the state of a stateNotifierProvider, I don't know how to do it. I tried my best but I reached the limit of my best. I already saw this and this but it didn't help. Appreciate much if someone could help me out of this. Thanks

My service File

class ReportService {
  final Ref ref;
  ReportService({
    required this.ref,
  });


  Future<void> testReport() async {
  
    //* How can i override this provider ?
    final connection = ref.read(connectivityServiceProvider);

    if (connection) {
      try {
        await ref.read(reportRepositoryProvider).testFunction();
      } on FirebaseException catch (e, st) {
        ref.read(errorLoggerProvider).logError(e, st);
        throw Exception(e.message);
      }
    } else {
      throw Exception('Check internet connection...');
    }
  }
}

final reportServiceProvider = Provider<ReportService>((ref) => ReportService(
      ref: ref,
    ));

My test file

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  final reportRepository = MockReportRepository();


  ReportService makeReportService() {
    final container = ProviderContainer(overrides: [
      reportRepositoryProvider.overrideWithValue(reportRepository),
    ]);
    addTearDown(container.dispose);
    return container.read(reportServiceProvider);
  }


  test('test test', () async {
  
  //How to stub the connectivityServiceProvider here ?
  
    when(reportRepository.testFunction)
        .thenAnswer((invocation) => Future.value());
    final service = makeReportService();
    await service.testReport();
    verify(reportRepository.testFunction).called(1);
  });

My StateNotifierProvider

class ConnectivityService extends StateNotifier<bool> {
  ConnectivityService() : super(false);
}


final connectivityServiceProvider =
    StateNotifierProvider<ConnectivityService, bool>(
        (ref) => ConnectivityService());
john
  • 1,438
  • 8
  • 18

0 Answers0