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