假设你有这个值,你无法预测
foo
中键的值:
{
context: { version: 1.0 },
value: {
foo: {
afh34q2: [1n, 100n],
}
}
}
如何编写一个严格的匹配器,将键视为通配符并仅对值进行断言?
expect(value).toStrictEqual({
context: expect.objectContaining({
version: expect.any(String),
}),
value: {
foo: /* how to match on only the object values? */
}
});
我认为没有办法在单个断言中描述包含动态键的对象,可能是因为如果您像这样定义断言
// ...
foo: expect.objectContaining({ [expect.any(String)]: [1n, 100n] })
没有办法用多个键、预期键的数量或不同的可能值来定义匹配器对象。
所以我要做的就是在
value.foo
属性上编写一个单独的断言,如下所示
test('should have string keys and number array values', () => {
expect(Object.entries(value.value.foo)).toEqual([
[expect.any(String), [1, 100]]
]);
});