这里是SelectEndDate函数,我在这里比较日期。
selectEndDate = () => {
const currentDate = this.createDate();
const endDate = this.addSurveyForm.value.endDate;
const startDate = this.addSurveyForm.value.startDate;
Eif (startDate === undefined || startDate === null || startDate === '') {
this.addSurveyForm.patchValue({
endDate: new FormControl({ value: ' ', disabled: true }, Validators.required)
});
} else {
if (new Date(endDate) < new Date(currentDate)) {
this.addSurveyForm.patchValue({
endDate: ''
});
}
if (new Date(endDate) < new Date(startDate)) {
this.addSurveyForm.patchValue({
endDate: ''
});
}
}
}
我想为此功能编写测试用例。要检查开始日期是否为空(如果是),那么我写了这种情况
it('should call selectEndDate if startDate is null ', () => {
const startDate = '';
component.selectEndDate();
fixture.detectChanges();
expect(startDate).toBe('');
});
现在我不知道如何覆盖其他部分,我不能使用少于运算符的日期。所以请帮帮我。
在此测试中
it('should call selectEndDate if startDate is null ', () => {
const startDate = '';
component.selectEndDate();
fixture.detectChanges();
expect(startDate).toBe('');
});
两行
component.selectEndDate();
fixture.detectChanges();
不影响测试结果。const startDate = '';
与startDate
内部的selectEndDate
无关。您需要改为更改表单的值,并还要测试表单的值。
it('should call selectEndDate if startDate is null ', () => {
const component = fixture.componentInstance;
component.addSurveyForm.patchValue({
startDate: ''
});
fixture.detectChanges();
component.selectEndDate();
expect(component.addSurveyForm.value.endDate).toBe('');
});
此外,订阅component.addSurveyForm.controls.startDate.valueChanged
并在该订阅中更新endDate
会更可靠。这样,无论何时endDate
,startDate
都会被更新。即使发生在selectEndDate
功能之外