如何在文档测试中使用具有`test`属性的模块?

时间:2019-04-17 10:33:17

标签: rust rustdoc

我有一个模块,希望在文档的代码块中使用。

此模块仅用于测试,因此具有应保留的#![cfg(test)]属性。

但是,结果是,在文档上运行测试时,似乎没有包含该文件。

看看MVCE:

lib.rs

//! ```
//! use example::mock::Number;
//! ```
pub mod mock;

pub fn main() {}

mock.rs

#![cfg(test)]

pub type Number = i32;

此操作失败,并显示以下信息:

---- src/lib.rs -  (line 1) stdout ----
error[E0432]: unresolved import `example::mock`
 --> src/lib.rs:2:14
  |
4 | use example::mock::Number;
  |              ^^^^ could not find `mock` in `example`

是否有一种方法可以使我的文档测试代码使用为测试配置的这些文件?

1 个答案:

答案 0 :(得分:3)

这是doctest(Issue #45599)的已知限制。令人遗憾的是,自问题开始以来(2017年末),没有真正的进展。

作为一种变通方法,it is suggested您将功能添加到Cargo.toml

[features]
test = []

您可以执行#[cfg(test)]而不是检查#[cfg(feature = "test")]