11

我在使用 rspec、capybara、capybara-webkit 和 timecop 的某些集成规范中看到错误。

Capybara::FrozenInTime:
   time appears to be frozen, Capybara does not work with libraries which freeze time, consider using time travelling instead

我知道冻结时间的唯一宝石是 Timecop,但我没有在失败的测试用例中使用它。

由于错误仅在某些时候发生,我什至不知道在更改某些内容后它是否消失了。

4

2 回答 2

11

错误消息的末尾包含解决方案:

考虑使用时间旅行代替

只需更改Timecop.freezeTimecop.travel. Timecop.freeze 打破 Capybara 的自动等待功能。

此外,我会调用Timecop.return一个 after 块,因为它将与最近的旅行块相关联:

after :each do
  Timecop.return
end
于 2013-07-02T18:17:44.490 回答
6

我找到的解决方案是添加

before :each do
  Timecop.return
end

在 spec_helper.rb 中。

这样,我们保证在每次测试之前时间不会被冻结,尽管唯一存在此问题的是在不同于rack-test. 就我而言capybara-webkit

于 2012-08-22T20:04:29.283 回答