参数类型不可分配

时间:2018-07-04 11:32:01

标签: angular jasmine

我想测试一个函数,但是类型检查有问题。

我遇到以下错误:

  

不能将'TestDates []'类型的参数分配给'TestDates'类型的参数。'today'的属性在'TestDates []'类型中丢失。

我该如何解决?

 it('should create the table', () => {
    const testDataMock = new DataItems([new TestDates(new Date(), new Date(), new Date())],
      [new DataTable('123456', date, 1.05728,
        undefined, -0.123, -0.123)]
    );
    const spy = spyOn(component, 'createTable');
    component.createMatrixTable(testDataMock);

    fixture.detectChanges();
    expect(spy).toHaveBeenCalled();
  });

测试日期

export class TestDates {
  constructor(public today: Date,
              public lastMonth: Date,
              public lastDay: Date) {
  }
}

createMatrixTable

createMatrixTable(items: DataItems) {
    const {lastDay, lastMonth, today} = items.dateValues[0];
    const spreadOrQuote = this.data.type === 1 ? 'in' : 'out';
            this.createTable(items, columns);
          }

试运行后,我收到以下消息:

  

TypeError:无法读取未定义的属性“ lastDay”

1 个答案:

答案 0 :(得分:0)

new DataItems(....中的第一个参数是TestDates的数组,我认为它只是期望一个TestDates对象,这就是为什么要获取Argument of type 'TestDates[]' is not....的原因。试试这个:

it('should create the table', () => {
    const testDataMock = new DataItems(new TestDates(new Date(), new Date(), new Date()),
      [new DataTable('123456', date, 1.05728,
        undefined, -0.123, -0.123)]
    );
    const spy = spyOn(component, 'createTable');
    component.createMatrixTable(testDataMock);

    fixture.detectChanges();
    expect(spy).toHaveBeenCalled();
  });