Pruebas a getAllProducts
Clase 14 de 23 • Curso de Angular: Unit Testing para Componentes
Contenido del curso
Clase 14 de 23 • Curso de Angular: Unit Testing para Componentes
Contenido del curso
Cesar Elías Armendariz Ruano
Jorge Luis Silva Medina
James Stiven Montealegre Gutiérrez
Las pruebas que se realizan al método getAllProducts nos da la visualización cuando incrementarmos los valores de un limit (#máximo de productos visualizados) y un offsset(# máximo de carga desde el último renderizado) para renderizar los productos desde la API.
Por lo que se realizarón varios cambios en el component de products y en su prueba
products.component.ts
products: Product[] = []; limit = 10; offset = 0; status: 'loading' | 'success' | 'error' | 'init'= 'init'; constructor( private productsService: ProductsService ) { } ngOnInit(): void { this.getAllProducts(); } getAllProducts() { this.status = 'loading'; this.productsService.getAll(this.limit, this.offset) .subscribe(products => { this.products = [...this.products, ...products]; this.offset += this.limit; this.status = 'success'; }); }
products.component.html
<section class="container"> <h2>Products Component</h2> <div class="my-grid"> <app-product *ngFor="let product of products" [product]="product"> </app-product> </div> <button [disabled]="status === 'loading'" (click)="getAllProducts()"> <span *ngIf="status === 'init' || status === 'success'">Load more</span> <span *ngIf="status === 'loading'">Loading...</span> <span *ngIf="status === 'error'">Error</span> </button> </section>
products.component.spec.ts
describe('test for getAllProducts()', () => { it('should return product list from service', () => { // Arrange const productsMock = generateManyProducts(10); productService.getAll.and.returnValue(of(productsMock)); const countPrev = component.products.length; // Act component.getAllProducts(); // TODO const expectedImg = fixture.debugElement.query(By.css('app-product img')); fixture.detectChanges(); // Assert expect(component.products.length).toEqual(productsMock.length + countPrev); expect(component.products[0].images[0]).toEqual(expectedImg.nativeElement.src); }); }); });
Minuto 4:07
Hola a todos, ¿cómo escribir un createSpyObject para inyectar más endpoints del servicio??? Es decir, en este caso tenemos getAllProducts solamente ... pero y si tuvieramos más métodos por probar? como queda el spy?