SuperAPI AI 工具集

riverpod-testing

测试与质量

查看项目

更新于 10-16 01:25

技能介绍

用途:为 Riverpod(含 Flutter)提供测试指导,核心目标是按测试隔离状态、通过 overrides 模拟依赖,并让测试环境尽量贴近生产。

主要能力与用法: 单元测试(不依赖 Flutter):用 ProviderContainer.test() 为单个测试创建容器,不要在测试之间共享容器。通过 container.read(provider) 读取当前值;需要监听时使用 container.listen(provider, (prev, next) {}) 获取订阅,再用 subscription.read() 读取,资料建议在 provider 为 auto-dispose 时优先用 listen,避免测试中途被销毁。 组件测试:把被测组件包在 ProviderScope 中,使用 testWidgets 与 tester.pumpWidget;要访问 provider 时用 tester.container() 获取容器后 read。 模拟 provider:在 ProviderContainer 或 ProviderScope 上使用 overrides,如 exampleProvider.overrideWith((ref) => 'Hello from tests');资料称所有 provider 都可在无需额外配置的情况下被覆盖,family 覆盖等更多方式参见 riverpod-overrides。 异步 provider:读取 provider.future 得到 Future,配合 expectLater 与 completion 断言。 监听与验证:用 container.listen 断言回调参数或收集值列表,可与 mockito/mocktail 的 verify 模式配合。 模拟 Notifier:优先模拟 Notifier 依赖的仓库等依赖,而非 Notifier 本身;若要模拟 Notifier 应继承(subclass)而非实现(implement),使用代码生成时 mock 通常需与 Notifier 放在同一文件以访问生成的基类。

适用场景:Riverpod 状态逻辑的单元测试、包含 ProviderScope 的 widget 测试、需要替换依赖或异步状态的测试。

限制:资料未说明支持的具体 Riverpod 版本、平台或安装步骤,也未提供价格或收费信息;更多 override 方法请参考 riverpod-overrides 与官方文档。