【发布时间】:2019-11-04 18:08:15
【问题描述】:
我正在构建一些使用 chrono crate 在 Rust 中进行时间戳转换的测试。我需要确保他们考虑到本地时区,但测试将在多个时区运行,因此对于大多数测试人员来说都会失败。如何在运行测试时强制代码中的 Rust 或 chrono 使用特定时区?
我知道设置env TZ=CST 或类似的。由于我无法控制所有运行 cargo test 的执行环境的那部分,我认为这对我们不起作用。
【问题讨论】:
-
为什么不在每次测试开始时使用
std::env::set_var设置变量?或者甚至是一个懒惰的静态? -
我不明白你的问题
-
@OptimisticPeach 我认为这行不通,因为测试默认并行运行(除非您强制它们不这样做),在这种情况下,它们会不确定地覆盖相同的环境变量。跨度>
-
@OptimisticPeach 只要在您设置
TZ之前没有其他内容读取本地时间,该方法就可以工作。我曾假设(错误地)在 chrono 中创建Local时区会导致在我更改它之前读取它。我现在已经实际测试过,它可以工作,但如果操作顺序发生变化,它可能会很脆弱。
标签: testing time rust automated-tests