3 个版本 (稳定)
1.0.1 | 2020年11月5日 |
---|---|
0.1.0 | 2020年11月5日 |
#480 在 测试
2,470 每月下载量
在 chanoma 中使用
8KB
56 行
环境测试工具
只是一个简单用于在测试中操作环境变量的工具。
用法
在用 new
初始化变量管理器时,实际内容将被删除并存储在 initial_value
中。然后您可以使用 with
方法设置一个临时值。当它被丢弃时,环境变量将重置为其初始值。
示例
use env_test_util::TempEnvVar;
std::env::set_var("MY_VARIABLE", "ORIGINAL"); // set the variable to "ORIGINAL"
let variable = TempEnvVar::new("MY_VARIABLE"); // read the variable and stores it
assert_eq!(std::env::var("MY_VARIABLE").ok(), None);
let variable = variable.with("NEW_CONTENT"); // set the environment variable with a new content
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("NEW_CONTENT".into()));
drop(variable);
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("ORIGINAL".into()));
不要忘记在您的测试中分配变量,否则 drop
函数将立即被调用
use env_test_util::TempEnvVar;
std::env::set_var("MY_VARIABLE", "ORIGINAL"); // set the variable to "ORIGINAL"
TempEnvVar::new("MY_VARIABLE").with("SOMETHING_ELSE"); // read the variable and stores it
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("ORIGINAL".into()));
let _variable = TempEnvVar::new("MY_VARIABLE").with("SOMETHING_ELSE"); // Instead, store it in a variable
assert_eq!(std::env::var("MY_VARIABLE").ok(), Some("SOMETHING_ELSE".into()));
真实示例
#[test]
fn testing_conntection_database() {
let _original_url = TempEnvVar::new("DATABASE_URL").with("postgres://wrong-url");
let connection = Database::connect(); // something that reads the environment variable
assert!(connection.is_err());
}