javascript - Jasmine 期望 toEqual 但忽略实际对象上的其他属性以防止“期望......没有属性......”
问题描述
有时我只需要断言实际对象的特定属性,而不关心其他属性。
例如:
const actual = [
{ a: 1, additionalProp: 'not interestig' },
{ a: 2, additionalProp: 'not interestig' }
];
expect(actual).toEqual([
{ a: 1 },
{ a: 2 }
])
这目前失败:
预计 $[0] 没有属性
AdditionalProp: 'random value'
我该如何写期望?
我目前做这样的事情:
expect(actual.map(i => ({a: 1}))).toEqual([
{ a: 1 },
{ a: 2 }
])
但我不太喜欢它,它不适用于更复杂的对象
解决方案
您可以显式处理特定对象及其相关属性吗?
expect(actual.length).toBe(2);
expect(actual[0]['a']).toBe(1);
expect(actual[1]['a']).toBe(2);
另一种方法是使用jasmine.obectContaining
. 如果预期对象包含多个属性,这可能更合适。
const expected = [
{ a: 1 },
{ a: 2 }
];
expect(actual.length).toBe(expected.length);
for (let i = 0; i < expected.length; i++) {
expect(actual[i]).toEqual(jasmine.objectContaining(expected[i]));
}
推荐阅读
- ios - 如何 UICollectionView 每列具有不同的行
- python - Flask-RESTplus CORS 请求未将标头添加到响应中
- selenium - UI自动化——iOS按回车键
- sql-server - SQL Server 1B+ 记录表 - 处理 upserts 的最佳方式?
- c# - Windows Service C# 获取进程列表
- c# - 在方法之外定义静态列表的成员
- c# - 带有空格的 Unity3d 绘图
- dictionary - 什么是创建后永远不会更改的字典的最佳数据结构,不区分大小写的键查找并支持“startswith”
- java - 在将新子对象添加到父对象时,为所有子对象调用 JPA @PreUpdate
- scala - 如何访问嵌套案例类中的成员变量