jasmine toEqual方法不使用Header对象

时间:2017-08-15 16:49:01

标签: angular jasmine karma-jasmine

当我尝试测试toEqual对象时,

Header无法正常工作。

我在以下示例中隔离了问题:

 const foo = new Headers();
 const bar =  new Headers();
 bar.append('some', 'value'); // bar is mutated
 expect(foo).toEqual(bar); // returns true...

虽然foobar不同,但规范如何通过?

2 个答案:

答案 0 :(得分:0)

您需要通过其键获取特定的标头值。茉莉花可能无法像检查差异所需的那样深入检查。这样可以更好地工作,只需要您创建一个标题对象。

 const foo = new Headers();
 let newHeaderKey = 'some';
 let newHeaderValue = 'value';
 foo.append(newHeaderKey , newHeaderValue ); // foo is mutated
 expect(bar.headers.get(newHeaderKey )).toEqual(newHeaderValue ); // returns true...

答案 1 :(得分:-1)

为了回答你的问题,jasmine的toEqual方法检查严格的平等。在JavaScript(和TypeScript)中,如果两个对象是完全相同的对象(该对象的相同实例),则它们只能被视为100%相等。这意味着您只能验证以下内容是否会通过:

expect(foo).toEqual(foo);

这听起来没什么用,但是当你需要知道你拥有你想要的对象的确切实例时,它在大型应用程序中很有用。

关于如何使用jasmine进行测试,您可以测试Headers对象中的各个标题(例如,您可以验证foo.get('content-type')是否正确);

expect(foo.get('content-type')).toEqual(bar.get('content-type'));