我正在尝试对formControl的getTime()进行单元测试。我遇到错误
.getTime不是函数。
该组件文件的片段如下:
import {FormControl} from @angular/forms;
@component({
selector: 'lorem-ipsum',
templateUrl: './lorem-ipsum.html'
})
export class LoremIpsumComponent implements OnInIt {
.....
...
..
.
magazineSubscriptionFrom = new FormControl({value: '', disabled: true});
magazineSubscriptionTo = new FormControl({value: '', disabled: true});
constructor (
....
) {}
ngOnInit() {}
verifySubscription() {
let test1 = this.magazineSubscriptionFrom.value.getTime();
...
..
.
}
答案 0 :(得分:0)
发生错误的原因是,magazineSubscriptionFrom
的初始值为''
,因为您使用以下行在constructor
中进行了设置:
magazineSubscriptionFrom = new FormControl({value: '', disabled: true});
当您尝试在其上调用getTime()
时,会出现错误,因为getTime()
是Date
的函数。因此,您在表单控件中需要一个Date
值。您还需要将表单控件的字符串值转换为Date,以使getTime()
正常工作
您需要更改行:
let test1 = this.magazineSubscriptionFrom.value.getTime();
到
let test1 = new Date(this.magazineSubscriptionFrom.value).getTime();
现在,在测试中,您需要使用setValue
It is as below : It(‘should verifySubscription , () => {
Component.magazineSubscription.setValue(new Date()); <- set valid date here
fixture.DetectChanges();
Component.verifySubscription();
Expect(somevalue in verifySubscription fn).toBeTruthy;
}
也可以将其更改为magazineSubscriptionTo
控件。
希望它会有所帮助:)