如何在 flutter 单元测试的 expect 函数中比较两个列表?

How do I compare two list in expect function of flutter unit testing?

List<int> l1=[1,2,3]; List<int> l2=[1,2,3]; expect (l1,l2);

这是我在 Flutter 单元测试中使用的代码。

尽管两个列表的内容相同,但我无法通过测试。我无法找到在 Flutter 单元测试中使用 Equatable 比较列表的用例。有人可以帮忙吗?谢谢!

您可以使用方法 ListEquality().equals() 来检查两个 List 是否相等。

import 'package:collection/collection.dart';

List<int> l1 = [1,2,3];  
List<int> l2 = [1,2,3];
final bool equal = ListEquality().equals(l1, l2):
expect(equal, true);

列表相等在 Dart 中的工作方式不同。由于一切都是对象,因此您需要一种机制来检查每个元素。

如果两个列表没有嵌套 objects/informations,您可以使用 ListEquality class 来比较它们,或者,如果您想比较嵌套 objects/informations,您可以使用 DeepCollectionEquality。两者都来自 Dart 开箱即用的集合库。

您可以查看以下用法示例:

import 'package:collection/collection.dart';

void main() {
  const numberListOne = [1,2,3];
  const numberListTwo = [1,2,3];
  
  final _listEquality = ListEquality();
  print(_listEquality.equals(numberListOne, numberListTwo));
}