提问者:小点点

Jest:如何测试对象键和值?


我有一个mapModule,在这里我导入组件并导出它们:

import ComponentName from '../components/ComponentName';

export default {
  name: ComponentName,
};

如何测试mapModule是否具有正确的导出键和值,以及它们是否为null或未定义?


共3个答案

匿名用户

在版本23.3中。不开玩笑,

expect(string).toMatch(string) 

期待一个字符串。

使用:

const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)

结果是通过测试

匿名用户

您可以使用以下选项之一:

toEqual和toMatchObject是对象的模板匹配器:

let Obj = {name: 'component name', id: 2};
expect(oneObj).toEqual({name: 'component name'}) // false, should be exactly equal all Obj keys and values  
expect(oneObj).toMatchObject({name: 'component name'}) // true

或轻松使用toHaveProperty:

let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true

匿名用户

请记住,. toMatchObject检查

“JavaScript对象与对象属性的子集相匹配。”

因此,toMatchObject可能会有非预期的断言,例如:

expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass

如果要精确匹配对象,应使用。ToStritteQual,自第23次会议起提供:

expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail