Kai*_*las 23 javascript arrays unit-testing jasmine angular
尝试检查空数组时出错.我试过用:
情况1:通过初始化为数组
expect(fixture.componentInstance.dataSource).toBe([]);
情况2:通过初始化为数组
let expectedAry = new Array;
expect(fixture.componentInstance.dataSource).toBe(expectedAry);
两种情况都有相同的错误:
Expected [  ] to be [  ].
阵列也可以通过它们的长度来检查,以下工作正常
expect(fixture.componentInstance.dataSource.length).toEqual(0); 
0 length是一个选项,但不确定这是否是检查数组是否为空的正确方法.我们有更好的选择来检查数组是否为空?
Eva*_*oli 53
toBe 是一个明确的参考检查.
expect([1]).toBe([1]) 将失败,因为引用不同.
您应该使用toEqual,它有一些智能来检查数组内容而不是仅仅进行参考比较.
t_d*_*m93 13
使用toHaveSize匹配器:
expect(array).toHaveSize(0);
强烈建议使用它,因为您使用它获得的错误消息要好得多(例如Error: Expected array to have size 0)
附带Jasmine 3.6:发布文档
小智 5
使用 .toHaveLength 检查对象是否具有 .length 属性并将其设置为某个数值。
这对于检查数组或字符串大小特别有用。
expect([1, 2, 3]).toHaveLength(3);
expect('abc').toHaveLength(3);
expect('').not.toHaveLength(5);
来源https://jestjs.io/docs/expect#tohavelengthnumber