如何测试飞镖中两个持续时间是否大致相等



我正在尝试测试两个持续时间的相等性。从本质上讲,问题归结为:

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毫秒内,那么测试就会通过

感谢这个答案为我指明了正确的方向

相关内容

最新更新