assert-json-diff
This crate includes an assert macro for comparing two JSON values. It is designed to give much
more helpful error messages than the standard assert_eq!. It basically does a diff of the
two objects and tells you the exact differences. This is useful when asserting that two large
JSON objects are the same.
It uses the serde_json::Value type to represent JSON.
Example
extern crate assert_json_diff;
extern crate serde_json;
// probably with #[test] attribute
This will panic with the error message:
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
Additional data
It allows extra data in actual but not in expected. That is so you can verify just a part
of the JSON without having to specify the whole thing. For example this test passes:
extern crate assert_json_diff;
extern crate serde_json;
// probably with #[test] attribute
However expected cannot contain additional data so this test fails:
extern crate assert_json_diff;
extern crate serde_json;
// probably with #[test] attribute
That will print
json atom at path ".a.b" is missing from expected
The macro
The assert_json_eq! macro can be called with or without typing actual: and expected:
extern crate assert_json_diff;
extern crate serde_json;
// probably with #[test] attribute
// probably with #[test] attribute
The version that includes actual: and expected: is preferred because it makes it very clear
which is which and there which can contain additional data
License: MIT