0
我不确定你们是否像这样测试,但我是一个TDD家伙,并一直陷入奇怪的东西。时间戳由DJ以某种方式转换,或时区......我不知道。测试例子如下延迟作业转换时间,给出奇怪的摩卡期望错误
我使用delayed_job的2.0.3
data = {:value => 0.856, :timestamp => Time.zone.now}
job = MyMailer.send_later :send_values, data, emails
MyMailer.expects(:send_values).with(data, emails).once
job.payload_object.perform
class MyMailer
def self.send_values(data, emails)
end
end
OK,测试预期失败
unexpected invocation: MyMailer.send_values({:value => 0.856576407208833, :timestamp => Thu Nov 11 22:01:00 UTC 2010 (1289512860.94962 secs)}, ..
unsatisfied expectations:
- expected exactly once, not yet invoked: MyMailer.send_values({:value => 0.856576407208833, :timestamp => Thu, 11 Nov 2010 23:01:00 CET +01:00}...
与日期时间是差不多,DateTime.now
代替Time.zone.now
got :timestamp => Thu Nov 11 23:13:33 +0100 2010 (1289513613.0 secs)
expected :timestamp => 2010-11-11T23:13:33+01:00
发生了什么?我如何控制它(我想要)?
你是绝对正确的有关时区是问题,但它不是在插入时间的问题,这是一个问题,当DJ反序列化YAML(句柄),不使用配置Time.zone,只服务器时区(这是一样的Time.now) – oma 2010-11-12 09:01:49
是的,我看到的 - 但是如果你调整Time.zone.now到Time.zone.now.to_datetime是不是会是正确的,你之前插入时? – Christian 2010-11-12 09:21:34