1 个不稳定版本

0.0.1 2022年9月18日

#206#模拟

MIT/Apache

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.0MIT 协议 提供。

依赖关系

~3.5–5.5MB
~88K SLoC