Как смоделировать значение formControl getTime() в модульных тестах

Я пытаюсь выполнить модульное тестирование getTime() для formControl. я получаю сообщение об ошибке

.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();
    ...
    ..
    .
  }

person Ineedsunnydays    schedule 23.05.2019    source источник
comment
Можете ли вы также опубликовать свой тестовый код   -  person asimhashmi    schedule 23.05.2019
comment
@HDJEMAI ... tq для форматирования .... В следующий раз я постараюсь лучше   -  person Ineedsunnydays    schedule 23.05.2019
comment
Может быть, вы можете попробовать использовать spyOnProperty   -  person HDJEMAI    schedule 23.05.2019
comment
взгляните сюда, это также может помочь: Как выполнить FormControl в Angular2   -  person HDJEMAI    schedule 23.05.2019
comment
Это выглядит следующим образом: It(‘should verifySubscription , () =› { Component.magazineSubscription.setValue(‘’); приспособление.DetectChanges(); Component.verifySubscription(); Expect(somevalue in verifySubscription fn).toBeTruthy; }   -  person Ineedsunnydays    schedule 23.05.2019


Ответы (1)


Причина вашей ошибки в том, что начальное значение magazineSubscriptionFrom равно '', поскольку вы устанавливаете его в своей строке constructor с помощью:

magazineSubscriptionFrom = new FormControl({value: '', disabled: true});

Когда вы попытаетесь вызвать на нем getTime(), это выдаст вам ошибку, потому что getTime() — это функция для Date. Итак, вам нужно значение Date в вашем элементе управления формой. Вам также необходимо преобразовать строковое значение элемента управления формы в Date, чтобы getTime() работало.

Вам нужно изменить строку:

let test1 = this.magazineSubscriptionFrom.value.getTime();

to

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.

Надеюсь, поможет :)

person asimhashmi    schedule 23.05.2019