fluttercommunity / fluttercommunity/wakelock_plus

Export WakelockPlusPlatformInterface from main package to simplify mocking

Open
#132 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Dart
Stars
109
Forks
97
Avg merge
5d 4h
Merged PRs (30d)
2

Description

# Context

When writing Flutter tests that involve code using wakelock_plus, tests fail with a PlatformException because the native channel is unavailable in the test environment:

```
PlatformException(channel-error, Unable to establish connection on channel: "dev.flutter.pigeon.wakelock_plus_platform_interface.WakelockPlusApi.toggle"., null, null)
```

# Current workaround

To mock the platform in tests, I currently do the following:

```
import 'package:mocktail/mocktail.dart';
import 'package:wakelock_plus_platform_interface/wakelock_plus_platform_interface.dart';

class MockWakelockPlusPlatform extends Mock
implements WakelockPlusPlatformInterface {}

final mockWakelock = MockWakelockPlusPlatform();
wakelockPlusPlatformInstance = mockWakelock;
when(
() => mockWakelock.toggle(enable: any(named: 'enable')),
).thenAnswer((_) async {});
```

This requires adding wakelock_plus_platform_interface as a dev_dependency directly, since it's not exported by the main wakelock_plus package.

> Note: I may be wrong about the intended mocking approach. If there's an official or recommended way to mock wakelock_plus in tests, I'd be happy to hear it and update my code accordingly. This issue is based on my own exploration.

# Problem

Having to depend on wakelock_plus_platform_interface directly as a dev_dependency creates a potential version drift risk: if the platform interface package is updated independently, consumers would need to manually keep both versions in sync, which is error-prone and adds maintenance overhead.

# Suggested fix

Re-export WakelockPlusPlatformInterface (or at least the types needed for mocking) from the main wakelock_plus package, so that users only need to depend on wakelock_plus itself, even for testing purposes.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.