就像轮轮测试
expect(WallObject).to.have.schema(expectedSchema)
。同样,Jest 中有哪个函数?我正在使用 jest 和 supertest 。
JEST 中没有任何东西可以直接测试模式。我在 AJV 的帮助下实现了这一目标。使用 AJV,我将模式与响应进行比较,然后使用 Jest 期望检查值是否为真。喜欢
const Ajv = require('ajv');
const ajv = new Ajv({
allErrors: true,
format: 'full',
useDefaults: true,
coerceTypes: 'array',
errorDataPath: 'property',
sourceCode: false,
});
const validateParams = (params, schema) => {
const validate = ajv.compile(schema);
const isValidParams = validate(params);
return isValidParams;
};
const result = validateParams(res.body, {
type: 'array',
items: {
type: 'object',
properties: {
id: {
type: 'integer',
},
email: {
type: 'string',
},
}
}
});
expect(result).toBe(true);
done();
我最近使用了jest-json-schema
非常容易使用。
import { matchers } from 'jest-json-schema';
expect.extend(matchers);
it('validates my json', () => {
const schema = {
properties: {
hello: { type: 'string' },
},
required: ['hello'],
};
expect({ hello: 'world' }).toMatchSchema(schema);
});