Prueba de la unidad FormGroup / FormArray

votos
0

Tengo una función que acepta una variable AbstractControl y lleva a cabo las siguientes acciones:

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

La estructura del objeto cuando realizo console.log(item)es la siguiente ( sólo he mostrado importante información ):

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

Sin embargo, me parece que no puede probar de forma adecuada ...

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

Todo lo que recibe de la consola es

No se puede leer la propiedad 'empuje' de indefinido

Si quito los soportes de matriz de respecto a mi FormBuilder.group (es decir fb.group(example);, recibo el mensaje:

customer.controls.packages.push no es una función

Publicado el 19/12/2018 a las 14:15
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Would't es necesario agregar un formArray con el nombre de 'miMatriz' se prueba en lugar de una matriz en una formGroup sin un nombre de control? Así que algo como:

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);
});
Respondida el 19/12/2018 a las 14:25
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more