如何在黄瓜测试中伪造JavaScript时间和时区?

时间:2014-07-30 08:58:06

标签: javascript ruby-on-rails datetime cucumber sinon

在Rails应用程序中,我正在尝试为显示事件开始时间的页面编写Cucumber测试。时间在UTC中存储在数据库中,而在页面上运行的event.js脚本计算本地等效项并将其附加到视图中。

在测试中,我一直在尝试使用sinon.js伪造时间。黄瓜步骤And I am a user whose local time is "..."定义为page.execute_script "var clock=sinon.useFakeTimers(...)"。但是,此脚本在页面加载后运行并在执行event.js之后运行,因此时间假装发生得太晚。如果sinon脚本首先在不同的页面上运行,那么当测试到达事件页面时,JS时间已恢复到其实际值。

其次,仅仅假装时间不足以进行测试。如果sinon将时间设置为例如2014-07-30T10:00:00 + 05:00(即UTC + 5),JS计算其实际本地时区的等价物。 JS从操作系统获取时区信息(偏移量和实际时区)。因此,无法编写And I should see "...GMT+x"之类的Cucumber步骤,因为" x"始终取决于运行测试的系统的实际时区。

任何帮助将不胜感激!

0 个答案:

没有答案