SuperAPI AI 工具集

cometchat-flutter-v6-testing

测试与质量

查看项目

更新于 10-15 20:14

技能介绍

用途:为 CometChat Flutter UIKit v6(稳定版,基于 Bloc)提供测试配方。多数 v5 模式可沿用,差异集中在状态管理原语(Bloc 而非 GetX)以及合并了通话功能的统一 cometchat_chat_uikit 包。建议先阅读 cometchat-flutter-v6-core(UIKitSettings、init/login 顺序、硬性规则)、cometchat-flutter-v6-events(基于 Bloc 的事件流)与 cometchat-flutter-v5-testing(非 v6 特有模式,如 CI 配置、golden 测试、mocktail 入门)。

主要能力:v5 到 v6 的测试差异包括状态管理由 GetX 改为 Bloc;测试中的依赖注入由 Get.reset() 改为每个测试通过 MultiBlocProvider 提供,或用 BlocProvider.value 传入 mock;通话包由独立的 cometchat_calls_uikit 合并进 cometchat_chat_uikit;初始化顺序改为在 CometChatUIKit.init 的 onSuccess 中调用 CometChatUIKitCalls.init;监听器由稳定字符串 ID 改为 Bloc 订阅并自动清理;测试间状态持久化方面,Bloc 状态按实例隔离,无需全局重置,但 provider 必须每个测试重新创建。

使用方式:在 pubspec.yaml 的 dev_dependencies 中加入 flutter_test、bloc_test ^9.0.0、mocktail ^1.0.0 与 integration_test。先定义 CometChatService 抽象并实现 CometChatServiceImpl,再在测试中用 MockCometChatService 与 MockAuthBloc(MockBloc<E, S>)替换。用 bloc_test 编写 Bloc 单元测试,断言状态序列并 verify 调用;用 BlocProvider.value 配合 mockBloc 编写组件测试;集成测试与 golden 测试沿用 v5 模式。通话相关测试同样用 blocTest,并需保证 init 在任何 initiateCall 测试前完成,可在 setUpAll 中处理。

适用场景与限制:适用于登录成功/失败、加载与错误 UI、登录后查看会话、通话初始化顺序等测试。注意反模式:跨测试复用同一 MockBloc 而不重置、遗漏 registerFallbackValue、在 Bloc 构造函数中产生副作用、依赖相等性的 emit 检查、在组件测试中使用真实 ChangeNotifierProvider、状态发出后未 pump。资料未提供具体收费、价格与平台信息。