如果不在ruby中使用sleep(),我将如何测试/测试updated_at字段?
发布时间:2020-12-16 23:02:21 所属栏目:百科 来源:网络整理
导读:如何在不使用sleep(1.second)方法的情况下编写规范?当我删除睡眠时,我的测试会因为返回相同的时间戳而中断? 我有以下类方法: def skipqs = find_or_create_by(user_id: user_id)qs.set_updated_atqs.n_skip += 1qs.save!end 并遵循以下规范: qs = skip(u
如何在不使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |