Реактивные формы - родитель FormControl не виден во время тестирования жасмина - PullRequest
0 голосов
/ 14 декабря 2018

Я использую формы Angular 6, Jasmine и Reactive.

Допустим, у меня есть форма, как показано ниже:

const formArray = new FormArray([
  new FormGroup({
    questionId: '11',
    answer: new FormControl('99122284542', CustomValidators.peselVsBirthDateValidator())
  }),
  new FormGroup({
    questionId: '22',
    answer: new FormControl('22.12.1999', CustomValidators.peselVsBirthDateValidator())
  })
]);

И где-то в peselVsBirthDateValidator Я хочу получить parent из control:

  public static peselVsBirthDateValidator(): ValidatorFn {
    return (control: FormControl): ValidationErrors | null => {
      // ...
        const parent = control.parent;
      // ...
    };
  }

Это прекрасно работает при запуске приложения.

Но я бы хотел протестировать этот валидатор, поэтому в моем файле spec есть:

  it('validator test', () => {

    const formArray = new FormArray([
      new FormGroup({
        questionId: '11',
        answer: new FormControl('99122284542', CustomValidators.peselVsBirthDateValidator())
      }),
      new FormGroup({
        questionId: '22',
        answer: new FormControl('22.12.1999', CustomValidators.peselVsBirthDateValidator())
      })
    ]);

  });

И даже если запустить этот тест без какого-либо expect, я получу:

TypeError: Cannot read property 'value' of undefined

Когда я отлаживаю код - control выглядит хорошо, точно так же, как FormControl должен выглядеть (не буду вставлять его здесь, потому что он довольно большой), но control.parent - это undefined.

Полагаю, что по какой-то причине жасмин не передает полную ссылку на объект, можно ли как-то принудительно вызвать его?

Или, может быть, есть другой способ справиться с этим?

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