茉莉花测试获得角度应用的意外结果

时间:2018-04-19 23:20:38

标签: angular jasmine karma-jasmine

我已经使用karma load runner为我的angular 4应用程序编写了Jasmine测试。我期待该方法返回false但由于某种原因返回true。 不确定为什么?

测试1

it('should return false because the current item max value is less to the current min value', () => {
    comp.domicileInfo.taxAssesment.items = [{maxSize: 30000000 , minSize: 30000000 , values: [2 , 2]}];
    let isMax: boolean = comp.isMaxValid(comp.domicileInfo.taxAssesment.items , 1);
    console.log(isMax);
    console.log(comp.domicileInfo.taxAssesment.items);
    expect(isMax).toBe(false);
  });

方法

isMaxValid(currentItem: any, item_IDX: number) {
    if (item_IDX === 0) {
      return true;
    }

    if (+currentItem.maxSize <= +currentItem.minSize ) {
      return false;
    }
    return true;
  }

测试2

方法:请注意数组中的第一个元素将包含minSize:0和maxSize:20000000

isMinValid(currentItem: any, item_IDX: number) {
    if (item_IDX === 0) {
      return true;
    }

    let previousItem = this.domicileInfo.taxAssesment.items[item_IDX - 1];
    if (+currentItem.minSize !== +previousItem.maxSize  ) {
      return false;
    }
    return true;
  }



fit('should return true because the current item min value is equal to the previous max value', () => {
    comp.domicileInfo.taxAssesment.items = [{maxSize: 30000000 , minSize: 20000000 , values: [2 , 2]}];
    let isMax: boolean = comp.isMinValid(comp.domicileInfo.taxAssesment.items[0] , 1);
    console.log(isMax);
    console.log(comp.domicileInfo.taxAssesment.items);
    expect(isMax).toBe(true);
  });

1 个答案:

答案 0 :(得分:0)

您的意思是使用数组中的项而不是数组本身吗?

let isMax: boolean = comp.isMaxValid(comp.domicileInfo.taxAssesment.items[0], 1);

由于此错误,您的方法是尝试将undefined值转换为int,从而产生NaN值。在JavaScript中,NaNs are never equal to each other

这就是使用TypeScript类型系统非常有用的原因。