typescript Chaijs -在对象中Assert多个键和值

af7jpaap  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(142)

我正在重写一些测试,我有一个问题。假设我有一个对象,有10个键/值对。一些值是字符串,一些是数字。
我不想做的是分别检查每个键/值,而是一起检查所有字符串和数字。
那么,有没有更好的方法来做到这一点:

expect(a).to.have.property(“b”).that.is.a(“string”).and.not.empty;
expect(a).to.have.property(“c”).that.is.a(“string”).and.not.empty;
expect(a).to.have.property(“d”).that.is.a(“number”);
expect(a).to.have.property(“e”).that.is.a(“number”);

我想把前两个和后两个归为一个Assert,这可行吗?
非常感谢!

gjmwrych

gjmwrych1#

您可以将Array.prototype.every()assert函数配合使用,如以下示例代码所示:
TSPlayground

import {assert} from 'chai';

const a = {
  b: 'hello',
  c: 'world',
  d: 1,
  e: 2,
};

// The property names which correspond to the string values:
const strProps: (keyof typeof a)[] = ['b', 'c' /* etc. */];

assert(
  strProps.every(key => (
    key in a
    && typeof a[key] === 'string'
    && (a[key] as string).length > 0
  )),
  'Your string property error message here',
);

// The property names which correspond to the number values:
const numProps: (keyof typeof a)[] = ['d', 'e' /* etc. */];

assert(
  numProps.every(key => key in a && typeof a[key] === 'number'),
  'Your number property error message here',
);

相关问题