A JavaScript library to test JSON with some nice features.
It is built to test REST API endpoints but, of course, you can use it to whatever you want.
npm install match-json
Of course, match JSON objects.
You can compare primitives.
// Numbers
match(3.1415, 3.1415) // => true
//Strings
match('Uno Dos Tres', 'Uno Dos Tres') // => true
// Booleans
match(false, false) // => true
// And with undefined and null values
match(undefined, undefined) // => true
match(null, null) // => true
And structures (objects and arrays).
match({ name: 'Link', color: 'green' }, { name: 'Link', color: 'green' }) // => true
match([ 'deku', 'goron', 'zora' ], [ 'deku', 'goron', 'zora' ]) // => true
You can match using functions
// Yeah, with functions!
match({ name: 'Samus' }, hero => hero.name.length >= 5) // => true
And regular expressions
// Yeah, with RegExp too!
match('Kvothe', /K.ot.*e?/) // => true
And everything together!
match({
name: { first: 'Walter', last: 'White' },
age: 51
},
{
name: { first: /[\w]*/, last: 'White' },
age: age => age > 18
}); // => YEAH, true!
Also, you can also predefine an expected pattern.
const nameIsLarge = match.bake({ name: name => name.length > 10 })
nameIsLarge('Tom') // => false :(
nameIsLarge('Tooooooooom') // => true :D
match( a : T, b : T ) : boolean
match( a : T, test : RegExp ) : boolean
match( a : T, test : PredicateFunction ) : boolean
bake( a: T ) : PredicateFunction
( where PredicateFunction = ( w : T ) : boolean )
- Is worth to mention that you only can use JSON-data as the first argument of the function. Not functions or RegExp.
- I made this for test my API endpoints, thats why it only acepts to test JSON data.
Feel free to open an issue and/or make a PR if you found a bug or think in a way this lib or even the README can be improved.
MIT