Модульное тестирование FormGroup / FormArray - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть функция, которая принимает переменную AbstractControl и выполняет следующее действие:

new(item: AbstractControl) {
  item['controls'].myArray.push(
    this.formBuilder.group({
      // my attributes here
    )}
  )
}

Структура объекта при выполнении console.log(item) выглядит следующим образом ( Я только показал важную информацию ):

FormGroup {
  controls: {
    …,
    items: FormArray { 
      …,
      controls: Array(5) [FormGroup, FormGroup, …] 
  }
}

Однако я не могу проверить это должным образом ...

it('Should add', () => {
    const fb = new FormBuilder();
    const myObject = fb.group([example]);

    component.new(myObject);

    const packagesLength = component.myFormGroup.get('data')['controls'][0]['controls']['items']['controls'].length;

    expect(packagesLength).toEqual(2);
  });

Все, что я получаю с консоли, это

Невозможно прочитать свойство 'push' из неопределенного

Если я уберу скобки массива из для моей FormBuilder.group (то есть fb.group(example);, я получу сообщение:

customer.controls.packages.push не является функцией

1 Ответ

0 голосов
/ 19 декабря 2018

Разве вам не нужно добавлять formArray с именем myArray в тесте, а не массив в formGroup без имени элемента управления?Так что-то вроде:

it('Should add', () => {
    const fb = new FormBuilder();
    const myObject = fb.group('myArray': fb.array());

    component.new(myObject);

    const packagesLength = component.myFormGroup.get('data')['controls'][0] ['controls']['items']['controls'].length;

    expect(packagesLength).toEqual(2);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...