Les tests unitaires FormGroup / FormArray

voix
0

J'ai une fonction qui accepte une variable AbstractControl et exécute l'action suivante:

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

La structure de l' objet lorsque je joue console.log(item)est la suivante ( je n'ai montré informations importantes ):

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

Cependant, je ne peux pas sembler tester correctement ...

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

Tout ce que j'obtenir de la console est

Impossible de lire la propriété « push » undefined

Si je retire les supports de tableau de mon FormBuilder.group (c. -à fb.group(example);, je reçois le message suivant :

customer.controls.packages.push n'est pas une fonction

Créé 19/12/2018 à 14:15
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Would't vous devez ajouter un formArray avec le nom de « monTableau » en tester plutôt qu'un tableau dans un formGroup sans nom de contrôle? Donc, quelque chose comme:

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);
});
Créé 19/12/2018 à 14:25
source utilisateur

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