O teste de unidade FormGroup / FormArray

votos
0

Eu tenho uma função que aceita uma variável AbstractControl e executa as seguintes ações:

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

A estrutura do objeto quando executar console.log(item)é a seguinte ( I apenas mostraram Informação importante ):

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

No entanto, eu não consigo testá-lo corretamente ...

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

Tudo o que começa a partir do console é

não pode ler a propriedade 'push' de indefinido

Se eu remover os suportes de matriz a partir para o meu FormBuilder.group (ou seja fb.group(example);, eu recebo a mensagem:

customer.controls.packages.push não é uma função

Publicado 19/12/2018 em 14:15
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

você would't precisa adicionar um formArray com o nome de 'myArray' em você testar em vez de uma matriz em uma formGroup sem um nome de controle? Então, 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);
});
Respondeu 19/12/2018 em 14:25
fonte usuário

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