我的 Rails 应用程序包含一个 JavaScript 模式,它会在用户单击链接 45 秒后弹出。结果,我的验收测试,过去没有延迟就通过了,现在失败了。
我最初尝试在 Capybara 验收测试中使用 Timecop gem 来快进时间,但这没有用。然而,当我添加一个 sleep(45) 时,它确实有效。显然,我不能在我的规范中使用 sleep(45) 3 次,但很高兴知道什么是有效的,这样我就可以用更快的方法接近它。
我从实验中得出的结论是,Ruby 跟踪时间,Javascript 跟踪时间,Timecop 快速转发 Ruby 时间,而不是 Javascript 时间。有没有办法在我的 Capybara 测试中快进 45 秒,以便我的 Javascript 事件触发?
这是导致我的测试失败的函数:
$('.votable').one('click', '.vote', function() {
$('.post-vote').
delay(45000).
queue(function() {
$(this).dialog('open')
});
});
同样,当延迟被移除时,我的规格通过了,但我需要延迟。我怎样才能在我的 Capybara 测试中解决这个问题?还是我需要用 Jasmine 测试该方法?