我是使用karma / jasmine进行单元测试的新手,我正在尝试测试两个相同类型但具有不同值的对象。这意味着,相同的属性,但每个对象具有不同的值,如下所示:
let myFirstObject: myType = {
id: 1,
name: "name1",
//... some other properties,
}
let mySecondObject: myType = {
id: 2,
name: "name2",
//... some other properties,
}
it('should be a true comparison', () => {
expect(myFirstObject).toEqual(mySecondObject);
});
我希望它是真的,因为类型和属性是相同的(结构是相同的),虽然存储的值是不同的。但是只有当两个项完全相等(属性和值)时才使用jasmine .toEqual()。 如何在karma / jasmine中对结构/类型进行比较而不考虑值?
(注意:我的项目是离子/角度IO,如果重要的话)
有什么想法吗?
答案 0 :(得分:0)
Object.Keys(myFirstObject)
将返回一个键数组作为字符串。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
为什么不循环数组并检查mySecondObject.hasOwnProperty(key)?
Object.keys(myFirstObject).map(key => {
expect(mySecondObject.hasOwnProperty(key)).toBe(true)
})
编辑:如果您使用的是打字稿,则可以使用界面来检查对象。 Interface type check with Typescript