所以我對這個匹配器感到有點困惑。
為什么這個測驗回傳失敗?
expect(Future.value(true),Future.value(true));
我認為它是相同的值,匹配器應該為該測驗回傳成功。
uj5u.com熱心網友回復:
它們是不同的物件,使用hashcode 運算子 ==進行比較,而不是通過 hashCode。但是,默認運算子 == 實作比較物件標識。這會有所不同,因為它們不是同一個物件。
如果您await是期貨,則將比較這些值并且它會通過。
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
編輯:回答你的另一個問題:
您知道如何比較 2 個相同的課程嗎?我只是嘗試 expect(ClassA(), ClassA()) 仍然回傳失敗測驗。如何讓expect(ClassA(), ClassA()) 通過?
你有點expect以錯誤的方式使用。如果你想知道這個類是否是一個特定的型別,你可以這樣做:
test('test', () async {
final ClassA classAInstance = ClassA();
expect(classAInstance, isA<ClassA>());
expect(classAInstance == classAInstance, true);
});
感謝 jamesdlin 糾正我的哈希碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367005.html
上一篇:Dart:遍歷串列中的串列
下一篇:我使用Listview.Builder()小部件成功創建了一個長串列視圖,但是背景關系和索引來自itemBuilder內部:(背景關系,索引)?
