gpt4 book ai didi

flutter - 为什么 expect(Future.value(true), Future.value(true)) 在 flutter 测试中失败?

转载 作者:行者123 更新时间:2023-12-05 05:52:28 25 4
gpt4 key购买 nike

所以我对这个匹配器感到有点困惑。

为什么这个测试返回失败?

expect(Future.value(true),Future.value(true));

我认为这是相同的值,匹配器应该为该测试返回成功。

最佳答案

它们是不同的对象,使用 hashcode operator == 进行比较,而不是 hashCode。但是,默认运算符 == 实现比较对象标识。这将是不同的,因为它们不是同一个对象。

如果您await future 的值将被比较并且它会通过。

  test('test', () async {
print(Future.value(true).hashCode);
print(Future.value(true).hashCode);
expect(await Future.value(true), await Future.value(true));
});

https://api.flutter.dev/flutter/dart-core/Object/operator_equals.html

编辑:回答您的其他问题:

Do you know how to compare 2 same classes? I just try expect(ClassA(), ClassA()) still returning fail test. How to make expect(ClassA(), ClassA()) to pass?

您有点以错误的方式使用了 expect。如果您想知道该类是否是特定类型,您可以这样做:

test('test', () async {
final ClassA classAInstance = ClassA();
expect(classAInstance, isA<ClassA>());
expect(classAInstance == classAInstance, true);
});

感谢 jamesdlin 在哈希码上纠正我。

关于flutter - 为什么 expect(Future.value(true), Future.value(true)) 在 flutter 测试中失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70121137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com