如何使用Jest匹配器匹配XML对象键?

von4xj4u  于 2023-10-14  发布在  Jest
关注(0)|答案(1)|浏览(130)

假设你有这个值,你不能预测foo中键的值:

{
  context: { version: 1.0 },
  value: {
    foo: {
      afh34q2: [1n, 100n],
    }
  }
}

我如何编写一个严格匹配器,将键视为通配符,并仅对值进行Assert?

expect(value).toStrictEqual({
  context: expect.objectContaining({
    version: expect.any(String),
  }),
  value: {
    foo: /* how to match on only the object values? */
  }
});
3j86kqsm

3j86kqsm1#

我不认为有一种方法可以在一个Assert中描述包含动态键的对象,可能是因为如果你像这样定义Assert,

// ... 
foo: expect.objectContaining({ [expect.any(String)]: [1n, 100n] })

没有一种方法可以用多个键,期望键的数量或不同的可能值来定义匹配器对象。
所以我要做的是在value.foo属性上写一个单独的Assert,如下所示

test('should have string keys and number array values', () => {
        expect(Object.entries(value.value.foo)).toEqual([
            [expect.any(String), [1, 100]]
        ]);
    });

repl.it www.example.com

相关问题