如何在不使用sleep(1.second)方法的情况下编写规范?当我删除睡眠时,我的测试会因为返回相同的时间戳而中断?
def skip qs = find_or_create_by(user_id: user_id) qs.set_updated_at qs.n_skip += 1 qs.save! end
并遵循以下规范:
qs = skip(user.id) sleep(1.second) qs2 = skip(user.id) qs.should_not be_nil qs2.should_not be_nil (qs.updated_at < qs2.updated_at).should be_true
解决方法
我过去曾使用
Timecop gem进行基于时间的测试.
require 'timecop' require 'test/unit' class MyTestCase < Test::Unit::TestCase def test_mortgage_due_in_30_days john = User.find(1) john.sign_mortgage! assert !john.mortgage_payment_due? Timecop.travel(Time.Now + 30.days) do assert john.mortgage_payment_due? end end end
所以你的例子看起来像:
qs = skip(user.id) Timecop.travel(Time.Now + 1.minute) do qs2 = skip(user.id) end qs.should_not be_nil qs2.should_not be_nil (qs.updated_at < qs2.updated_at).should be_true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。