Как смоделировать значение formControl getTime () в модульных тестах - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь выполнить модульное тестирование 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();
    ...
    ..
    .
  }

1 Ответ

0 голосов
/ 23 мая 2019

Причина вашей ошибки в том, что начальное значение 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 control.

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

...