Rust panic 单元测试 - 匹配错误消息的细节
Rust panic unit test - specifics of matching the error message
我正在寻找一种方法来断言一段代码发生恐慌,并且恐慌消息包含特定的字符串。我想出了以下似乎有效的方法:
let actual = std::panic::catch_unwind(|| decode(notation.to_string()));
assert!(actual.is_err());
let err = *(actual.unwrap_err().downcast::<String>().unwrap());
assert!(err.contains("Invalid"));
我知道我可以使用 #[should_panic]
,它允许我指定要检查的消息,但我只想部分匹配确切的错误消息。
使用#[should_panic(expected = "substring of panic message")]
例子
fn some_panic_function() {
panic!("abc substring of panic message abc");
}
#[test]
#[should_panic(expected = "substring of panic message")]
fn test_some_panic_function() {
some_panic_function();
}
我正在寻找一种方法来断言一段代码发生恐慌,并且恐慌消息包含特定的字符串。我想出了以下似乎有效的方法:
let actual = std::panic::catch_unwind(|| decode(notation.to_string()));
assert!(actual.is_err());
let err = *(actual.unwrap_err().downcast::<String>().unwrap());
assert!(err.contains("Invalid"));
我知道我可以使用 #[should_panic]
,它允许我指定要检查的消息,但我只想部分匹配确切的错误消息。
使用#[should_panic(expected = "substring of panic message")]
例子
fn some_panic_function() {
panic!("abc substring of panic message abc");
}
#[test]
#[should_panic(expected = "substring of panic message")]
fn test_some_panic_function() {
some_panic_function();
}