import 'dart:async'; import 'package:background_downloader/background_downloader.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; class _Storage implements PersistentStorage { @override Future initialize() async {} @override Future> retrieveAllTaskRecords() async => []; @override dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); } void main() { TestWidgetsFlutterBinding.ensureInitialized(); test('Android connectivity initialization error fails ready without detached error', () async { final previous = debugDefaultTargetPlatformOverride; debugDefaultTargetPlatformOverride = TargetPlatform.android; addTearDown(() => debugDefaultTargetPlatformOverride = previous); final messenger = TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; const connectivity = MethodChannel( 'dev.fluttercommunity.plus/connectivity', ); const events = MethodChannel( 'dev.fluttercommunity.plus/connectivity_status', ); messenger.setMockMethodCallHandler( connectivity, (_) async => throw PlatformException(code: 'network_unavailable'), ); messenger.setMockMethodCallHandler(events, (_) async => null); addTearDown(() { messenger.setMockMethodCallHandler(connectivity, null); messenger.setMockMethodCallHandler(events, null); }); final unhandled = []; final done = Completer(); Object? observed; runZonedGuarded(() async { final downloader = FileDownloader(persistentStorage: _Storage()); try { await downloader.ready; } catch (error) { observed = error; } finally { await Future.delayed(Duration.zero); done.complete(); } }, (error, stack) => unhandled.add(error)); await done.future; expect( observed, isA().having( (error) => error.code, 'code', 'network_unavailable', ), ); expect(unhandled, isEmpty); }); }