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

How to test if two durations are approximately equal in Dart

我正在尝试测试两个持续时间是否相等。本质上问题归结为:

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 是增量。这意味着只要预期持续时间在实际持续时间的 1000 毫秒以内,那么测试就会通过。

感谢 为我指明了正确的方向。