我想测试一个函数,但是类型检查有问题。
我遇到以下错误:
不能将'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”
答案 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();
});