在玩笑中,我需要测试一个可以为null或对象的期望值
{
main: {
prop1: 'abc',
prop2: '123',
}
}
但是,如果它是一个对象,那么我真的不在乎main
包含什么,我不在乎prop1
或prop2
。我只需要断言该对象包含一个名为main
的密钥即可。
Jest reference提到了objectContaining
,但仍然需要我至少指定props
中的一个,这样会使我的代码不必要地冗长。
是否有任何快速的方法来实现可以命名为objectContainingKey
的断言,例如:
expect(something).toEqual(expect.objectContainingKey('main'))
答案 0 :(得分:1)
或者您可以通过一些棘手的方式完成
const something = { main: { prop1: 'abc', prop2: '123' } }
expect(Object.keys(something).toString()).toBe('main')
和
expect(Object.keys(something.main).toString()).toBe('prop1')
expect(Object.keys(something.main).toString()).toBe('prop2')
或
expect(Object.keys(something.main))
.toEqual(expect.arrayContaining(['prop1', 'prop2']))
答案 1 :(得分:1)
文档have something比接受的答案更合适,更易读:
expect(obj.main).toBeDefined();
答案 2 :(得分:1)
假设
const something = {
main: {
prop1: 'abc',
prop2: '123',
}
}
然后您可以使用 objectContaining 和 any 来检查 something
是一个包含键 main
的对象,该键包含一个对象
expect(something).toEqual(
expect.objectContaining({
main: expect.any(Object),
});
);