easy_mock_channel 0.1.0
easy_mock_channel: ^0.1.0 copied to clipboard
Fluent MethodChannel mocking for Flutter tests. Stub platform-channel calls with when, match arguments by deep equality, and assert with verify — the mock handler installs immediately and is removed o [...]
easy_mock_channel #
Fluent MethodChannel mocking for Flutter tests — the same when / verify
ergonomics as a request mock, but for platform channels. It stubs the channel at
the binary-messenger seam (setMockMethodCallHandler), so the real plugin Dart
code runs and only the native side is faked.
Usage #
import 'package:easy_mock_channel/easy_mock_channel.dart';
testWidgets('camera permission is denied', (tester) async {
final channel = mockChannel('flutter.baseflow.com/permissions/methods')
..when(method: 'requestPermissions', returns: {1: 0}); // {camera: denied}
// ... drive the code under test that calls Permission.camera.request() ...
expect(channel.verify(method: 'requestPermissions').length, 1);
});
mockChannel(name)installs the handler immediately and removes it on test teardown.when({required method, arguments, returns, throws})— reply withreturns, or throwthrows(e.g. aPlatformException). Supplyargumentsto match only calls whoseargumentsdeep-equal it; omit it to match any. Later stubs win.verify({required method})returns the recordedMethodCalls for that method;callsis the full ordered list.
returnis a reserved word in Dart, so the parameter is namedreturns.
Notes #
- Requires the Flutter test binding (use inside
testWidgets, or callTestWidgetsFlutterBinding.ensureInitialized()in a plaintest). - VM/widget tests only — it mocks the channel, it does not talk to a device.