如何从测试模块中调用不在模块内的函数?

时间:2016-10-14 01:29:20

标签: rust

这些是我的src/lib.rs文件的内容:

pub fn foo() {}

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
        foo();
    }
}

当我运行cargo test时,我收到以下错误:

error[E0425]: unresolved name `foo`
 --> src/lib.rs:7:7
  |
7 |       foo();
  |       ^^^

如何从foo模块中调用test

1 个答案:

答案 0 :(得分:2)

您可以使用super::来引用父模块:

fn it_works() {
    super::foo();
}

::指代包的根模块:

fn it_works() {
    ::foo();
}

或者,由于foo可能会重复使用,您可以在模块中use

mod tests {
    use foo;         // <-- import the `foo` at root module
    // or
    use super::foo;  // <-- import the `foo` at parent module
    fn it_works() {
        foo();
    }
}