为什么我的测试比较时间有时会失败?我该如何改进这个测试?
data = { init: Time.zone.now, end: Time.zone.tomorrow }
put "/api/...", params: data,
expect(JSON.parse(response.body)['time'].to_time).to be_within(2.seconds).of(Time.zone.now)
我想解决这个问题以通过所有的测试
为什么我的测试比较时间有时会失败?我该如何改进这个测试?
data = { init: Time.zone.now, end: Time.zone.tomorrow }
put "/api/...", params: data,
expect(JSON.parse(response.body)['time'].to_time).to be_within(2.seconds).of(Time.zone.now)
我想解决这个问题以通过所有的测试
1条答案
按热度按时间eh57zj3b1#
ActiveSupport::Testing::TimeHelpers
为这类测试提供了有用的帮助,它们将允许您“冻结”Ruby运行时的当前时间,以避免使用任何类似be_within(2.seconds)
的技巧,并防止测试中出现任何问题。您的测试如下所示:
我还建议将日期作为整数进行比较,以防止任何时区问题:
expect(task['time'].to_i).to eq(Time.now.to_i)