An opinionated Jest matcher that generates, validates, and versions JSON Schemas for your APIs.
- Add dependency
yarn add --dev jest-schema-matcher
- Set global variable
SHOULD_UPDATE_SCHEMAS
in your jest's global config
// jest.config.js
module.exports = {
...
globals: {
SHOULD_UPDATE_SCHEMAS: true, // If true, schemas will be written/updated
}
}
- Add the matcher to your tests
test('Check against schema', () => {
const object = {
username: 'test_user_a124',
password: 'fixtures_password',
}
expect(object).toMatchSchema('schemaName')
/**
* 1. If SHOULD_UPDATE_SCHEMAS === true:
* Will create a new schema or update existing schema in same path as test file.
* E.g. If test path is `.../__tests__/sample.tests.js`
* Then schema will be created in `.../__tests__/schemas/schemaName.json`
* --or--
* If SHOULD_UPDATE_SCHEMAS === false:
* Will infer a new schema and recommend schema changes if the saved schema could be improved.
*/
/** 2. Will validate `object` against saved schema.*/
})