Child
进程。我想测试应用程序的逻辑,而子结构并不是真正需要的,我已经研究了几个模拟框架,例如mockall或faux。但真的不明白如何模拟一个简单的外部结构?非常感谢任何帮助。
无法完全取代
std::process::Command
和 std::process::Child
的行为。但是,有一种方法可以改变实际发生的情况 - 更改执行的命令!
src/bin/test-child.rs
,其 main()
函数具有您希望测试子级具有的任何行为。tests/
中,“集成测试”,而不是在应用程序代码中),传递 env!("CARGO_BIN_EXE_test-child")
作为被测试代码应生成的程序的路径。 (此环境变量由 Cargo 自动设置。)采用这种方法,而不是进程内模拟,意味着您的测试可以更加真实;它不会调用可能与
std
略有不同的模拟,但实际上启动了一个真正的过程。打包/部署应用程序时,所需的配置也可能很有用,因为它允许遵守有关子程序必须存储位置的要求,或在运行时选择不同的版本。