Angular Карма-Жасмин Сравнение фиников - PullRequest
0 голосов
/ 26 мая 2020

Вот функция 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('');
  });

Теперь я не понимаю, как я могу охватить другую часть, я не могу использовать оператор «меньше» для дат. Так что, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 26 мая 2020

В этом тесте

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...