Flutter 测试失败,单元测试预期和实际状态对象相同但仍然失败

Posted

技术标签:

【中文标题】Flutter 测试失败,单元测试预期和实际状态对象相同但仍然失败【英文标题】:Flutter test failure, unit test expected and actual state object are the same but still fail 【发布时间】:2021-07-29 12:24:12 【问题描述】:

我有一个这样的代码测试,预期和实际已经有相同的对象,但是单元测试仍然失败,我该怎么办?

 blocTest("_mapClickEmailToState",
        wait: const Duration(milliseconds: 500),
        build: () 
          return bloc;
        ,
        act: (bloc) => bloc.add(ClickEmail()),
        expect: () => [
              ClickEmailSuccess()
        ]);
  );

我有这个错误

预期:['ClickEmailSuccess' 实例] 实际:[实例 'ClickEmailSuccess'] 其中:在位置 [0] 是 而不是

【问题讨论】:

看来你需要覆盖ClickEmailSuccess 类的相等性。 【参考方案1】:

您必须覆盖 == 运算符和 hashCode 或为该类实现 Equatable。

为了覆盖它们,让我们假设类 Person 具有属性 name 和 age,它看起来像这样:

class Person 
  const Person(this.name, this.age);

  final String name;
  final int age

  @override
  bool operator ==(Object other) =>
    identical(this, other) ||
    other is Person &&
    runtimeType == other.runtimeType &&
    name == other.name &&
    age == other.age;

  @override
  int get hashCode => name.hashCode ^ age.hashCode;

【讨论】:

谢谢,这是在为我的班级实施 Equatable 后工作的

以上是关于Flutter 测试失败,单元测试预期和实际状态对象相同但仍然失败的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:单元测试一个 Cubit 问题

Dart / Flutter测试肘,比较预期和实际的问题

使用 Flutter bloc_test 测试特定状态

python单元测试框架-unittest之跳过测试和预期失败

运行所有测试时单元测试失败,但调试时通过

转单元测试接口测试功能测试的区别