gpt4 book ai didi

unit-testing - 如何卡住考试时间?

转载 作者:行者123 更新时间:2023-11-29 08:27:31 28 4
gpt4 key购买 nike

我正在使用 time crate,我想测试与时间相关的函数的输出。

我想在给定时间卡住时间;我该怎么做?

最佳答案

我假设你的意思是你有一个像这样的函数:

pub fn is_now_afternoon() -> bool {
let t = time::now();
t.tm_hour >= 12
}

并且您想测试它是否适用于特定时间。

我会以稍微不同的方式构建它并传递时间:

// More generic helper function, which does all the real work
fn is_t_afternoon(t: &Tm) -> bool {
t.tm_hour >= 12
}

// Simple wrapper to use now.
pub fn is_now_afternoon() -> bool {
is_t_afternoon(&time::now())
}

#[test]
fn test_afternoon() {
assert!(is_t_afternoon(Tm{ tm_hour: 13, /* other fields */ }));
assert!(!is_t_afternoon(Tm{ tm_hour: 10, /* other fields */ }));
}

想法是将完成所有工作的代码分离成单独的、更容易测试的函数,这些函数不依赖于“真实世界”环境。作为奖励,我经常发现那些更通用的函数稍后在其他上下文中很有用。

另一种策略(我认为这更难也更容易出错)是在测试函数中独立计算给定当前时间的答案,并检查真实答案是否一致。然而,这似乎可能导致间歇性测试,或者只是在测试中出现与“真实”功能相同的错误。

关于unit-testing - 如何卡住考试时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38323643/

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