在 Rust 测试中使用外部文件

Pee*_*ech 3 unit-testing rust

我正在编写一个从文件中读取文件内容的服务,该文件的位置是从 env 变量中读取的FILE_LOCATION

fn my_function(){
    let path = match env::var("FILE_LOCATION") {
    ...
    let contents = match fs::read(&path) {
}

Run Code Online (Sandbox Code Playgroud)

我有一个测试文件test_file.json

proj
  resources
    test
      test_file.json
  src
    main.rs
  tests
    unit_tests.rs

Run Code Online (Sandbox Code Playgroud)

在测试中我可以设置FILE_LOCATION

env::set_var("FILE_LOCATION", "path/to/test/file");
Run Code Online (Sandbox Code Playgroud)

问题是 的值应该是path/to/test/file多少?

或者换句话说:

如何在 Rust 测试中访问外部文件?

Dan*_*all 5

Cargo 将环境变量CARGO_MANIFEST_DIR设置为包含Cargo.toml文件的目录。所以你可以得到那个环境变量,并附resources/test/test_file.json加到它。

有关Cargo 设置的环境变量,请参阅https://doc.rust-lang.org/cargo/reference/environment-variables.html