gpt4 book ai didi

ruby-on-rails - 使用 Ruby 临时设置系统时间以进行单元测试

转载 作者:行者123 更新时间:2023-12-04 07:38:55 25 4
gpt4 key购买 nike

我已经在 Apt 模型上创建了一个自定义验证,如果表单提交是在下午 3 点之后完成的,它会验证第二天不能预订约会,我正在尝试确定运行单元测试的最佳方式验证我的自定义验证是否正常工作。

目前,我的测试包含一个 if 语句来检查测试是在下午 3 点之前还是之后运行,并根据当前系统时间使用不同的测试。但是,无论系统时间是多少,我都希望能够测试这两种情况。

test "booking appointment for tomorrow before/after three pm" do
a = appointments(:aptone)

# Set appointment date to tomorrow
a.apt_date = DateTime.current + 1.day

if (Time.current.hour >= 12)
assert(a.invalid?, 'Appointment CANNOT be booked after 3 PM')
elsif
assert(a.valid?, 'Appointment CAN be booked before 3 PM')
end
end

我想知道是否有办法在运行测试时临时设置系统时间,以便无论何时运行测试,我都可以测试这两个断言。

最佳答案

我强烈推荐 timecop gem,它是为完全满足您提到的要求而编写的。查看 github 页面上的文档,特别是 freeze 方法(或 travel ,但最好在示例中针对卡住的系统时间进行测试)。

关于ruby-on-rails - 使用 Ruby 临时设置系统时间以进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com