1 个不稳定版本
0.0.1 | 2022年9月18日 |
---|
#206 在 #模拟
20KB
349 行
clocks - 可测试的时间源
这个包提供了一个 Clock
类型,可以作为时间源使用。通过在代码中使用时钟,您可以在测试期间替换时间源。这可以使您更容易测试像过期时间这样的东西。
示例用法
use chrono::{DateTime, Utc};
use clocks::Clock;
struct Prod {
clock: Clock<Utc>,
}
impl Prod {
pub fn new() -> Self {
Self::new_with_clock(Clock::new())
}
pub fn new_with_clock(clock: Clock<Utc>) -> Self {
Self { clock }
}
pub fn get_time(&self) -> String {
self.clock.now().to_rfc2822()
}
}
fn main() {
let p = Prod::new();
println!("{}", p.get_time());
}
#[test]
fn test_basic() {
let start = DateTime::parse_from_rfc2822("Sun, 18 Sep 2022 20:53:00 GMT")
.unwrap()
.with_timezone(&Utc);
let c = Clock::new_fake(start.clone());
let p = Prod::new_with_clock(c);
assert_eq!(p.get_time(), "Sun, 18 Sep 2022 20:53:00 +0000");
}
许可协议
此代码根据 Apache-2.0 或 MIT 协议 提供。
依赖关系
~3.5–5.5MB
~88K SLoC