方法打开一个Rails控制台,输入:之间使用奇怪的行为?对于日期
2.weeks.ago.between? 2.weeks.ago, 1.week.ago
没有给予你真的还是假的?没有,再试几次,它会给你不同的答案。
现在,我在想,因为我们将2.weeks.ago与2.weeks.ago进行比较,所以评估两个语句之间的时间会导致这种行为。
我不能肯定地说,但我猜测之间?方法不是包含性的,所以如果两个语句之间经过了几毫秒,上面的代码将被计算为真,因为它将在两个日期之间进行比较。
但是,如果CPU设法足够快地处理这样的时间,以致过去的时间可以忽略不计,那么它将评估为假。
任何人都可以对此有所了解吗?在这个可能非常重要的系统中,这是一个极好的例子,但是当我的测试通过并且看似随机失败时,这让我头痛。
奇怪的是,这样做的时候不会发生这种情况:
Date.yesterday.between? Date.yesterday, Date.tomorrow
嗯,我想我的意图是很明显描述 - 失败的测试用例。我在Windows盒子上遇到这个问题;也许这就是原因。 – Jaryl 2009-01-10 20:21:52