fas*_*erg 37 javascript unit-testing jestjs
我有一个mapModule导入组件并导出它们的地方:
import ComponentName from '../components/ComponentName';
export default {
name: ComponentName,
};
Run Code Online (Sandbox Code Playgroud)
如何测试mapModule具有正确导出的键,值以及它们不为null或未定义的?
小智 55
在版本23.3.0的开玩笑中,
expect(string).toMatch(string)
Run Code Online (Sandbox Code Playgroud)
期待一个字符串.
使用:
const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)
Run Code Online (Sandbox Code Playgroud)
结果是通过测试
小智 45
你可以使用其中一个:
toEqual和toMatch是对象的模板匹配器:
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
Run Code Online (Sandbox Code Playgroud)
或者很容易使用toHaveProperty:
let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true
Run Code Online (Sandbox Code Playgroud)
rto*_*res 30
请记住,.toMatchObject检查
“JavaScript 对象匹配对象属性的子集。”
所以toMatchObject可能会有意想不到的断言,例如:
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass
Run Code Online (Sandbox Code Playgroud)
如果您确实想完全匹配对象,则应使用.toStrictEqual, 可用,因为jest 23:
expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail
Run Code Online (Sandbox Code Playgroud)
Dyl*_*rce 13
只是添加这个技巧,我认为它为我自己的测试提供了更好的粒度,特别是在与模拟服务的参数匹配时:
expect.objectContaining({
url: expect.stringContaining('https://'),
})
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 regex 来expect.stringMatching根据值测试给定的正则表达式。很简约。
Expect.stringContaining Expect.stringMatching
对于单个密钥,您可以查看
expect(Boolean(obj[prop])).toBe(true | false);
对于多个键(必须全部存在),您可以使用,
expect(Boolean(obj[prop1]) && Boolean(obj[prop2])).toBe(true | false);
对于多个键(必须存在任何一个),您可以使用
expect(Boolean(obj[prop1]) || Boolean(obj[prop2])).toBe(true | false);
| 归档时间: |
|
| 查看次数: |
35719 次 |
| 最近记录: |