4 个版本 (1 个稳定版)
1.0.0 | 2020 年 11 月 30 日 |
---|---|
0.1.2 | 2020 年 11 月 28 日 |
0.1.1 | 2020 年 11 月 28 日 |
0.1.0 | 2020 年 11 月 28 日 |
#460 在 测试 中
14KB
assert-not-modified
Rust 宏,给定一个变量和一段代码块,执行代码块并检查变量是否已更改。
例如,这可以检查函数没有副作用。
给定的变量必须实现 Clone 和 Debug。
恐慌
如果数据被修改,则会引发恐慌并显示消息“数据被修改了,不应该修改”。
示例
#[macro_use] extern crate assert_not_modified;
// This function returns Err but modifies x anyway. This is misleading.
fn modify_x_or_err(x: &mut i32) -> Result<(), String> {
*x = *x + 1;
Err("Something wrong happened !".to_owned())
}
// This test will expose the lying function :
assert!(std::panic::catch_unwind(|| {
let mut x = 3;
assert_not_modified!(x, modify_x_or_err(&mut x)); // Panics
})
.is_err());
lib.rs
:
宏,给定一个变量和一段代码块,执行代码块并检查变量是否已更改。
例如,这可以检查函数没有副作用。