我正在尝试测试两个持续时间的相等性。从本质上讲,问题归结为:
test('times are approximately equal', () {
final expected = DateTime.now();
final actual = DateTime.now();
expect(actual, equals(expected));
});
此测试失败是因为时间略有不同:
Expected: DateTime:<2021-06-24 14:37:31.946196>
Actual: DateTime:<2021-06-24 14:37:31.946197>
只要持续时间在一秒内,对我来说就足够近了。我该如何测试?
我找到了答案,所以我把它添加到下面
您可以将持续时间转换为毫秒,然后使用closeTo
匹配器。
test('times are approximately equal', () {
final expected = DateTime.now();
final actual = DateTime.now();
expect(actual.millisecond, closeTo(expected.millisecond, 1000));
});
1000
是delta。这意味着,只要预期的持续时间在实际持续时间的1000毫秒内,那么测试就会通过
感谢这个答案为我指明了正确的方向