重新加载对象后更改 created_at 和冻结 Time.now 之间的差异
Changing of difference between created_at and frozen Time.now after reloading of object
我有规范检查对象的 Time.now 和 created_at 属性之间差异的计算。我存根了Time.now,所以这个值是不变的。此外,我已将 Time.now 设置为 created_at,但此值在重新加载对象后会发生变化。这怎么可能以及如何在对象重新加载后冻结 created_at?
这是一个问题示例:
time = Time.now
=> 2015-03-19 15:50:13 UTC
Time.stubs :now => time
=> #<Expectation:0x9938830 allowed any number of times...
user = User.last
=> #<User:0x000000097a6e40...
user.update_attribute :created_at, Time.now - 1.minute
=> true
user.created_at
=> Thu, 19 Mar 2015 15:49:13 UTC +00:00
Time.now - user.created_at
=> 60.0
Time.now - user.reload.created_at
=> 60.442063277
我使用 rails 4.2.0、ruby 2.2.0 和 rspec 2.14.1
只需重置纳秒:
time = Time.now.change(nsec: 0)
或毫秒:
time = Time.now.change(usec: 0)
Here 详情。
我有规范检查对象的 Time.now 和 created_at 属性之间差异的计算。我存根了Time.now,所以这个值是不变的。此外,我已将 Time.now 设置为 created_at,但此值在重新加载对象后会发生变化。这怎么可能以及如何在对象重新加载后冻结 created_at?
这是一个问题示例:
time = Time.now
=> 2015-03-19 15:50:13 UTC
Time.stubs :now => time
=> #<Expectation:0x9938830 allowed any number of times...
user = User.last
=> #<User:0x000000097a6e40...
user.update_attribute :created_at, Time.now - 1.minute
=> true
user.created_at
=> Thu, 19 Mar 2015 15:49:13 UTC +00:00
Time.now - user.created_at
=> 60.0
Time.now - user.reload.created_at
=> 60.442063277
我使用 rails 4.2.0、ruby 2.2.0 和 rspec 2.14.1
只需重置纳秒:
time = Time.now.change(nsec: 0)
或毫秒:
time = Time.now.change(usec: 0)
Here 详情。