dart - 如何比较同一类型的两个对象的值?

标签 dart flutter flutter-test

我需要为 Flutter 项目编写单元测试,如果有一个函数可以遍历同一类型的两个不同对象的所有属性以确保所有值都相同,我会很高兴。

代码示例:

void main() {
  test('startLoadingQuizReducer sets isLoading true', () {
    var initState = QuizGameState(null, null, null, false);
    var expectedState = QuizGameState(null, null, null, true);

    var action = StartLoadingQuiz();
    var actualState = quizGameReducer(initState, action);
    // my test fails here 
    expect(actualState, expectedState);
  });

最佳答案

如何覆盖 == 进行相等性测试

下面是重写 == 运算符的示例,以便您可以比较同一类型的两个对象。

class Person {
  final String name;
  final int age;
  
  const Person({this.name, this.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;
}

上面的例子来自this article ,建议您使用 Equitable包以简化流程。 This article也值得一读。

关于dart - 如何比较同一类型的两个对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006947/

相关文章:

firebase - 即使我有一个非常相似的作品,也无法从该函数中获得值(value)。 - flutter

sorting - 按日期排序arraylist

flutter - 在 Flutter 中将 BASE64 字符串转换为图像

flutter - 有没有办法在 vscode/visual studio code flutter 中自动填充所需的类/小部件属性?

firebase - 在 Xcode 中存档时 Flutter Firestore 插件抛出错误

android - 用Android Studio问题启动Flutter

Flutter API 获取数据并将其从一个屏幕发送到另一个屏幕

flutter 测试 : How to only run one group or test

firebase - 类型 'List<dynamic>'不是 'CollectionReference'的 'function result'类型的子类型

工厂构造函数标识符的 Dart 优势