11 个版本 (稳定版)
2.0.2 | 2022年6月29日 |
---|---|
2.0.1 | 2021年2月14日 |
2.0.0 | 2021年1月23日 |
1.1.0 | 2020年7月12日 |
0.2.1 | 2018年11月17日 |
在 开发工具 中排名第 4
每月下载量 1,243,861
被 1,187 个 软件包使用 (直接使用 116 个)
43KB
884 行
assert-json-diff
此软件包包含通过比较其 JSON 表示形式来比较两个可序列化值的宏。它旨在提供比标准 assert_eq!
更有帮助的错误消息。它基本上对两个对象进行差异比较,并告诉你确切的区别。当断言两个大型 JSON 对象相同时应使用它。
它使用 serde 和 serde_json 来执行序列化。
部分匹配
如果您想断言一个 JSON 值是另一个 JSON 值的“包含”部分,请使用 assert_json_include
use assert_json_diff::assert_json_include;
use serde_json::json;
let a = json!({
"data": {
"users": [
{
"id": 1,
"country": {
"name": "Denmark"
}
},
{
"id": 24,
"country": {
"name": "Denmark"
}
}
]
}
});
let b = json!({
"data": {
"users": [
{
"id": 1,
"country": {
"name": "Sweden"
}
},
{
"id": 2,
"country": {
"name": "Denmark"
}
}
]
}
});
assert_json_include!(actual: a, expected: b)
这将引发恐慌,并显示错误消息
json atoms at path ".data.users[0].country.name" are not equal:
expected:
"Sweden"
actual:
"Denmark"
json atoms at path ".data.users[1].id" are not equal:
expected:
2
actual:
24
assert_json_include
允许在 actual
中有额外的数据,但不允许在 expected
中有额外的数据。这样您就可以验证 JSON 的一部分,而无需指定整个内容。例如,此测试通过
use assert_json_diff::assert_json_include;
use serde_json::json;
assert_json_include!(
actual: json!({
"a": { "b": 1 },
}),
expected: json!({
"a": {},
})
)
但是,expected
不能包含额外的数据,所以此测试失败
use assert_json_diff::assert_json_include;
use serde_json::json;
assert_json_include!(
actual: json!({
"a": {},
}),
expected: json!({
"a": { "b": 1 },
})
)
这将打印
json atom at path ".a.b" is missing from actual
精确匹配
如果您想确保两个 JSON 值完全相同,请使用 assert_json_eq
。
use assert_json_diff::assert_json_eq;
use serde_json::json;
assert_json_eq!(
json!({ "a": { "b": 1 } }),
json!({ "a": {} })
)
这将引发恐慌,并显示错误消息
json atom at path ".a.b" is missing from lhs
进一步定制
您可以使用 assert_json_matches
进一步定制比较。
许可证:MIT
依赖项
~0.5–1MB
~20K SLoC