我有一个mapModule,我导入组件并导出它们:
import ComponentName from '../components/ComponentName';
export default {
name: ComponentName,
};
我如何测试mapModule有正确的导出键,值,他们不是空或未定义?
我有一个mapModule,我导入组件并导出它们:
import ComponentName from '../components/ComponentName';
export default {
name: ComponentName,
};
我如何测试mapModule有正确的导出键,值,他们不是空或未定义?
当前回答
请记住.toMatchObject检查
“JavaScript对象匹配对象属性的子集。”
所以toMatchObject可以有意想不到的断言,比如:
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass
如果你想精确匹配一个对象,你应该使用.toStrictEqual,自jest 23起可用:
expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail
其他回答
在23.3.0版本的jest中,
expect(string).toMatch(string)
期望一个字符串。
Use:
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
你可以用单把钥匙结账
期望(布尔(obj[支持]))。toBe(true | false);
对于多个键(所有键都必须存在),您可以使用,
expect(Boolean(obj[prop1]) && Boolean(obj[prop2])))。toBe(true | false);
对于多个键(其中任何一个必须存在),您可以使用
expect(Boolean(obj[prop1]) || Boolean(obj[prop2]))。toBe(true | false);
请记住.toMatchObject检查
“JavaScript对象匹配对象属性的子集。”
所以toMatchObject可以有意想不到的断言,比如:
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass
如果你想精确匹配一个对象,你应该使用.toStrictEqual,自jest 23起可用:
expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail
只是添加了这个技巧,认为它为我自己的测试提供了更好的粒度,特别是在匹配被模拟服务的参数时:
expect.objectContaining({
url: expect.stringContaining('https://'),
})
或者,您可以与expect一起使用regex。stringMatching,根据给定的值测试给定的正则表达式。很整洁。
expect.stringContaining expect.stringMatching