#env-var #manipulate #utils #manager #initial #set

env-test-util

只是一个简单用于在测试中操作环境变量的工具

3 个版本 (稳定)

1.0.1 2020年11月5日
0.1.0 2020年11月5日

#480测试

Download history 447/week @ 2024-03-14 624/week @ 2024-03-21 731/week @ 2024-03-28 492/week @ 2024-04-04 363/week @ 2024-04-11 467/week @ 2024-04-18 446/week @ 2024-04-25 563/week @ 2024-05-02 521/week @ 2024-05-09 724/week @ 2024-05-16 444/week @ 2024-05-23 329/week @ 2024-05-30 773/week @ 2024-06-06 645/week @ 2024-06-13 497/week @ 2024-06-20 501/week @ 2024-06-27

2,470 每月下载量
chanoma 中使用

MIT/Apache

8KB
56

环境测试工具

Crates.io Crates.io

Build Status codecov

只是一个简单用于在测试中操作环境变量的工具。

用法

在用 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());
}

无运行时依赖