有没有可能在铁 rust 中嘲笑Println!?[副本]

ovfsdjhp  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(190)

此问题在此处已有答案

How can I test stdin and stdout?(1个答案)
3天前关闭。
这是一个人为的例子,在“真实的生活中的编码”中可能没有人会这样做,但我试图对cargo new创建的默认rust代码进行测试,这是:

fn main() {
    println!("Hello, world!");
}

有没有办法Assert“Hello,world!”被写入控制台,可能是通过模仿println!宏?

alen0pnh

alen0pnh1#

这就是我测试(playground)的方法

#[test]
fn test_hello_world() {
    use std::process::Command;

    let status = Command::new("cargo").args(["new", "test-hello-world"]).status().unwrap();
    assert!(status.success());

    let output = Command::new("cargo").current_dir("test-hello-world").args(["run"]).output().unwrap().stdout;
    assert_eq!(output, b"Hello, world!\n".to_vec());

    std::fs::remove_dir_all("test-hello-world").unwrap();
}

这将创建默认的cargo项目并运行它。

相关问题