Jasmine如何检查两个对象是否完全相同?

时间:2017-05-23 10:13:20

标签: javascript jasmine

这是一个非常基本的问题,但同时在多个帖子中它没有解决方案。如何检查两个对象是否完全相同。 我试过了:

let objectToCopy = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
let copy = {};        
Helper.deepCopy(copy, objectToCopy, true, null);
expect(objectToCopy).toEqual(jasmine.objectContaining(copy));//it passes even if copy does contain only some of the objectToCopy fields

然而它非常宽松,如何测试对象是否相等,这意味着它们的所有属性是否相等?

当然我试过了:

expect(objectToCopy).toEqual(copy);

它没有编译:

enter image description here

2 个答案:

答案 0 :(得分:1)

objectContaining()不是用于完全匹配,而是用于非对称匹配。

只需使用:expect(objectToCopy).toEqual(copy)

答案 1 :(得分:1)

所以解决方案是:

expect(copy).toEqual(objectToCopy);

expect<any>(objectToCopy).toEqual(copy);

原始方式不起作用,因为TypeScript已使用给定参数的类型对方法进行参数化。