水豚整合测试中的冻结时间

时间:2015-09-01 03:00:56

标签: ruby rspec capybara timecop

我正在使用capybara和capybara-webkit编写集成测试,我需要对其进行两次比较并随机失败,因为有时第二次通过并且我有失败,如

expected: "Sep 01 2015 @ 04:49:17 employee_1"
     got: "Sep 01 2015 @ 04:49:18 employee_1" 

在我必须处理时间的非集成测试中,我使用Timecop.freeze,但如果我在这里尝试,我会得到

  

水豚:: FrozenInTime:

     

时间似乎被冻结,Capybara不与冻结时间的图书馆合作,考虑使用时间旅行

然而,根据我的理解,旅行时间并不能解决我的问题,因为时间之间的差异总是1秒。

有没有办法可以确保在测试执行期间时间不会改变?

谢谢

1 个答案:

答案 0 :(得分:1)

如果升级到Capybara 2.5并使用Ruby 2.0+,则Timecop.freeze应该可用。这是因为Capybara 2.5现在将使用系统单调时钟作为其等待行为(如果可用),允许冻结红宝石时间方法。