Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

183
Visualizações
Evento de envío de prueba angular en forma reactiva

Contexto

Tengo un componente con una forma básica (forma reactiva). Intento probar el evento de envío en este formulario para ver si llama correctamente al método necesario.

Mi problema

No puedo activar el evento de envío del formulario.

archivos

Componente.html

 <form class="form-horizontal" id="staticForm" [formGroup]="mySimpleForm" (ngSubmit)="sendMethod();" > <input type="text" formGroupName="email"> <button type="submit">Send form</button> </form>

componente.ts

 ngOnInit() { this.initSimpleForm(); } private initSimpleForm() { let file = null; this.mySimpleForm = this.formBuilder.group({ email: [ '', [ Validators.required ] ] }); } sendMethod() { console.log('submitted'); }

componente.spec.ts

 beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ MyComponent ], imports: [], providers: [ FormBuilder ], schemas: [NO_ERRORS_SCHEMA] }) .compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(MyComponent); comp = fixture.componentInstance; }); it(`should notify in console on form submit`, () => { spyOn(console, 'log'); comp.mySimpleForm.controls['email'].setValue('test@test.com'); fixture.debugElement.query(By.css('form')).triggerEventHandler('submit', null); fixture.detectChanges(); expect(console.log).toHaveBeenCalled(); // FAILS }); // TO make sure my spy on console log works, I made this and it works it(`will notify on direct sendMethod Call`, () => { spyOn(console, 'log'); comp.sendMethod(); fixture.detectChanges(); expect(console.log).toHaveBeenCalled(); // SUCCESS });

También probé eso en lugar de llamar a submit en el formulario:

 fixture.debugElement.query(By.css('button')).triggerEventHandler('click', null);

Entonces, ¿cómo activar el evento de envío de formulario?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La primera opción es llamar a ngSubmit directamente:

 .triggerEventHandler('ngSubmit', null);

La segunda opción es importar ReactiveFormsModule que configurará internamente el controlador de submit en el formulario. Entonces su método de activación debería funcionar:

 TestBed.configureTestingModule({ declarations: [ MyComponent ], imports: [ReactiveFormsModule], // <== import it providers: []
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda