List<int> l1=[1,2,3]; List<int> l2=[1,2,3]; expect (l1,l2);
Это код, который я использую в модульном тестировании Flutter.
Несмотря на то, что оба списка имеют одинаковое содержание, я не могу пройти тест. Я не могу найти вариант использования для сравнения списков с помощью Equatable в модульном тестировании Flutter. Может кто-нибудь помочь? Спасибо!
Я вижу, что вы уже приняли ответ, но не могли бы вы привести воспроизводимый пример? Даже если принятый ответ, кажется, решает вашу проблему, вероятно, что-то еще не так, поскольку показанный вами код уже должен работать.
Вы можете использовать метод 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. Поскольку все является объектом, вам нужен механизм для проверки каждого элемента.
Вы можете использовать либо класс ListEquality
для сравнения двух списков, если они не имеют вложенных объектов/информации, либо, если вы хотите сравнить вложенные объекты/информацию, вы можете использовать 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));
}
Это ваш точный код? Я не могу воспроизвести вашу проблему с кодом, который вы показали.
expect
неявно использует сопоставительequals
, а сопоставительequals
проверяетList
s и выполняет поэлементное сравнение на равенство.