Chaijs -在对象中断言多个键和值



我正在重写一些测试,我有一个问题。假设我有一个有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”);

我想把前两个和最后两个组合在一个断言中。这可行吗?

多谢!

您可以使用Array.prototype.every()assert函数,如下面的示例代码所示:

TS操场

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',
);

相关内容

  • 没有找到相关文章

最新更新