对 returns 没有的功能进行单元测试
unit test for a function that returns nothing
我想为 loadingTime 函数编写单元测试。该函数将timeTable(type map)转换为由0和1组成的结果数组。索引3-5(03:00 - 05:00)、12-14(12:00 - 14:00)是1,其余为0。然后将result数组赋值给rowTable。如何为此编写单元测试?
timeTable: Map<number, Array<from: string to: string>>
0:[{from: "03:00", to: 05:00"}, {from: "12:00", to:"14:00"}]
1:[{from: "00:00", to: "23:00"}]
2:[{from: "00:00", to: "23:00"}]
3:[{from: "00:00", to: "23:00"}]
4:[{from: "00:00", to: "23:00"}]
5:[{from: "00:00", to: "23:00"}]
6:[{from: "00:00", to: "23:00"}]
行表:
rowTable: Row[] = [
{ name: this.allDays.monday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.tuesday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.wednesday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.thursday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.friday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.saturday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.sunday, items: new Array(24).fill(1), active: true }
];
加载时间
loadingTime(): void {
if (this.timeTable) {
let result = [...this.timeTable].reduce((r, [key, value], i) => {
r[i] = Array(24).fill(0);
value.forEach(o => {
let start = getHours(o.from);
const end = getHours(o.to);
while (start <= end) {
r[i][start] = 1;
start++;
}
})
return r;
}, []);
this.rowTable.forEach((el, i) => {
el.items = result[i];
el.active = false;
})
}
}
我的尝试,但我不知道我的方向是否正确。请帮忙
it("should loading Time"), () => {
const timetableMock = new Map<number, Array<from: string to: string>>()
timetableMock.set(0, [{ from: '00:00', to: '23:00' }]);
component.loadingTime = () => {};
const onSaveSpy = spyOn(component, "loadingTime")
component.loadingTime();
expect(onSaveSpy).toEqual([........I don't know what to enter here]);
}
这样的东西行得通吗?
it('loadingTime should not update rowTable if timeTable is undefined', () => {
const rowTableForEachSpy = jest.spyOn(component.rowTable, 'forEach');
component.timeTable = void 0;
component.loadingTime();
expect(rowTableForEachSpy).not.toHaveBeenCalled();
// in addition you can most probably assert `component.rowTable` value here
})
it('loadingTime should update rowTable if timeTable is defined', () => {
const rowTableForEachSpy = jest.spyOn(component.rowTable, 'forEach');
component.timeTable = new Map(...);
component.loadingTime();
expect(rowTableForEachSpy).toHaveBeenCalled();
// in addition you can most probably assert `component.rowTable` value here
})
我想为 loadingTime 函数编写单元测试。该函数将timeTable(type map)转换为由0和1组成的结果数组。索引3-5(03:00 - 05:00)、12-14(12:00 - 14:00)是1,其余为0。然后将result数组赋值给rowTable。如何为此编写单元测试?
timeTable: Map<number, Array<from: string to: string>>
0:[{from: "03:00", to: 05:00"}, {from: "12:00", to:"14:00"}]
1:[{from: "00:00", to: "23:00"}]
2:[{from: "00:00", to: "23:00"}]
3:[{from: "00:00", to: "23:00"}]
4:[{from: "00:00", to: "23:00"}]
5:[{from: "00:00", to: "23:00"}]
6:[{from: "00:00", to: "23:00"}]
行表:
rowTable: Row[] = [
{ name: this.allDays.monday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.tuesday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.wednesday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.thursday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.friday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.saturday, items: new Array(24).fill(1), active: true },
{ name: this.allDays.sunday, items: new Array(24).fill(1), active: true }
];
加载时间
loadingTime(): void {
if (this.timeTable) {
let result = [...this.timeTable].reduce((r, [key, value], i) => {
r[i] = Array(24).fill(0);
value.forEach(o => {
let start = getHours(o.from);
const end = getHours(o.to);
while (start <= end) {
r[i][start] = 1;
start++;
}
})
return r;
}, []);
this.rowTable.forEach((el, i) => {
el.items = result[i];
el.active = false;
})
}
}
我的尝试,但我不知道我的方向是否正确。请帮忙
it("should loading Time"), () => {
const timetableMock = new Map<number, Array<from: string to: string>>()
timetableMock.set(0, [{ from: '00:00', to: '23:00' }]);
component.loadingTime = () => {};
const onSaveSpy = spyOn(component, "loadingTime")
component.loadingTime();
expect(onSaveSpy).toEqual([........I don't know what to enter here]);
}
这样的东西行得通吗?
it('loadingTime should not update rowTable if timeTable is undefined', () => {
const rowTableForEachSpy = jest.spyOn(component.rowTable, 'forEach');
component.timeTable = void 0;
component.loadingTime();
expect(rowTableForEachSpy).not.toHaveBeenCalled();
// in addition you can most probably assert `component.rowTable` value here
})
it('loadingTime should update rowTable if timeTable is defined', () => {
const rowTableForEachSpy = jest.spyOn(component.rowTable, 'forEach');
component.timeTable = new Map(...);
component.loadingTime();
expect(rowTableForEachSpy).toHaveBeenCalled();
// in addition you can most probably assert `component.rowTable` value here
})