Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

225
Views
Unidad de problemas que prueba el restablecimiento del control de forma reactiva angular al hacer clic en el botón

Me enfrento a un problema para escribir un caso de prueba de unidad en jazmín para mi aplicación angular. Tener un formulario reactivo e intentar restablecer un control de formulario en particular con un clic de botón. Aunque el escenario debería ser lo suficientemente simple como para probarlo, parece que me falta algo aquí.

A continuación se muestra el fragmento de código de la aplicación.

aplicación.componente.html:

 <form [formGroup]="userForm" novalidate (ngSubmit)="onSubmit()"> <div> <input type="text" id="fNameFld" name="fName" formControlName="fName" placeholder="First Name" /> <button (click)="clearField('fName')" id="clrFName"> Clear First Name </button> </div> <div> <input type="text" id="lNameFld" name="lName" formControlName="lName" placeholder="Last Name" /> <button (click)="clearField('lName')" id="clrLName">Clear Last Name</button> </div> <div> <button type="submit">Submit</button> </div> </form>

aplicación.componente.ts

 import { FormBuilder, FormGroup } from '@angular/forms'; @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], }) export class AppComponent implements OnInit { name = 'Angular ' + VERSION.major; userForm: FormGroup; constructor(private readonly fb: FormBuilder) {} ngOnInit() { this.userForm = this.fb.group({ fName: this.fb.control(null), lName: this.fb.control(null), }); } onSubmit() { console.log('Submitted Data', this.userForm.value); } clearField(controlName: string) { this.userForm.get(controlName).reset(); } }

Código de prueba de la unidad

 it('should clear fName control when the "Clear First Name" button is clicked', () => { const spy = spyOn(component, 'clearField'); const clearBtn = fixture.debugElement.query(By.css("button#clrFName")); const form = component.userForm; form.patchValue({ 'fName': 'John, 'lName': 'Doe' }); clearBtn.nativeElement.click(); fixture.detectChanges(); expect(spy).toHaveBeenCalledTimes(1); // passes expect(spy).toHaveBeenCalledWith('fName'); // passes expect(form.get('fName').value).toBeNull(); // fails: Expected 'John' to be null. });

Angular: 10.0.14

CLI angular: 10.0.8

StackBlitz: https://angular-ivy-fc6rik.stackblitz.io

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

parece que te clearField . Agregue esto para ejecutar realmente su contenido cuando se burle de él:

 const spy = spyOn(component, 'clearField').and.callThrough();

Entonces, cada vez que se llama a clearField , activará el espía (para que sepa si ha sido llamado) y ejecutará su contenido.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!