You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mock继承Equatable的类触发警告,求无需ignore的轻量解决方案

解决Mock继承Equatable类时的「Don't implement classes that override "=="」警告

问题重现

你遇到的问题是当Mock一个继承自Equatable的类时,出现了「Don't implement classes that override "=="」的警告,代码示例如下:

class MyEquatableClass extends Equatable {
  @override
  List<Object?> get props => [];
}

class MockMyEquatableClass extends Mock implements MyEquatableClass {}

极简解决方案

不用加忽略注释,也不用完全填充模型,只需要给Mock类做两处小改动:

class MockMyEquatableClass extends Mock with EquatableMixin implements MyEquatableClass {
  @override
  List<Object?> get props => (this as dynamic).props;
}

原理说明

  • 通过with EquatableMixin引入Equatable的==和hashCode实现,避免直接实现接口时与Mock的默认逻辑冲突
  • 重写props时将其转发到Mock的存根方法,这样你可以在测试中用when自定义props的返回值,比如:
final mockInstance = MockMyEquatableClass();
when(() => mockInstance.props).thenReturn(['id_123', 'test_value']);

这样改动后,既保留了Mock的所有测试功能,又让Equatable的相等性判断正常工作,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Alex Verbitski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:10:20