Probando el Router

Clase 2 de 20 • Curso de Angular: Unit Testing para Rutas

Clase anteriorSiguiente clase
    Cesar Elías Armendariz Ruano

    Cesar Elías Armendariz Ruano

    student•
    hace 3 años

    vamos a comprobar el router en el formulario del registro, para verificar si el ingreso del registro fue exitoso

    para lo cual cambiamos una prueba e incrementamos un mock de la ruta

    register-form.component.spec.ts

    import { Router } from '@angular/router'; describe('RegisterFormComponent', () => {   let component: RegisterFormComponent;   let fixture: ComponentFixture<RegisterFormComponent>;   let userService: jasmine.SpyObj<UsersService>;   let router: jasmine.SpyObj<Router>;   beforeEach(async () => {     const spy = jasmine.createSpyObj('UsersService', ['create', 'isAvailableByEmail']);     const routerSpy = jasmine.createSpyObj('Router', ['navigateByUrl']);     await TestBed.configureTestingModule({       declarations: [ RegisterFormComponent ],       imports: [ ReactiveFormsModule ],       providers: [         { provide:  UsersService, useValue: spy },         { provide:  Router, useValue: routerSpy },       ]     })     .compileComponents();   });   beforeEach(() => {     fixture = TestBed.createComponent(RegisterFormComponent);     userService = TestBed.inject(UsersService) as jasmine.SpyObj<UsersService>;     router = TestBed.inject(Router) as jasmine.SpyObj<Router>;     component = fixture.componentInstance;     userService.isAvailableByEmail.and.returnValue(mockObservable({isAvailable: true}));     fixture.detectChanges();   });      it('should send the form successfully from UI', fakeAsync(() => {     setInputValue(fixture, 'input#name', 'Nico');     setInputValue(fixture, 'input#email', 'nico@gmil.com');     setInputValue(fixture, 'input#password', '12121212');     setInputValue(fixture, 'input#confirmPassword', '12121212');     setCheckboxValue(fixture, 'input#terms', true);     const mockUser = generateOneUser();     userService.create.and.returnValue(asyncData(mockUser));     // Act     // component.register(new Event('submit'));     clickElement(fixture, 'btn-submit', true);     // query(fixture, 'form').triggerEventHandler('ngSubmit', new Event('submit'));     fixture.detectChanges();     expect(component.status).toEqual('loading');     tick();  // exec pending tasks     fixture.detectChanges();     expect(component.status).toEqual('success');     expect(component.form.valid).toBeTruthy();     expect(userService.create).toHaveBeenCalled();     expect(router.navigateByUrl).toHaveBeenCalledWith('/login');   }));