JEST 和 Supertest 中用于验证模式的 Expect 函数是什么?

问题描述 投票:0回答:2

就像轮轮测试

expect(WallObject).to.have.schema(expectedSchema)
。同样,Jest 中有哪个函数?我正在使用 jest 和 supertest 。

supertest jestjs babel-jest supertest-as-promised jest-fetch-mock
2个回答
1
投票

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();

0
投票

我最近使用了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);
});
© www.soinside.com 2019 - 2024. All rights reserved.