Vanessa Paola Oliveros Padron
PreguntaActualmente 2024 como se prueban los ActivatedRoute ya que en la documentacion no veo el "Stub"?
José Luis Jiménez
Por lo que veo ya no se suele usar el "Stub" sino una nueva estrategia llamada RouterTestingHarness..
Luis Jose Marquez Gonzalez
Puedes utilizar el
RouterTestingHarness. Dejoimport { provideLocationMocks } from '@angular/common/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { provideRouter } from '@angular/router'; import { RouterTestingHarness } from '@angular/router/testing'; import { mockObservable } from '../../../testing'; import { generateOneProduct } from '../../models/product.mock'; import { ProductsService } from '../../services/product.service'; import { ProductDetailComponent } from './product-detail.component'; fdescribe('ProductDetailComponent', () => { let component: ProductDetailComponent; let fixture: ComponentFixture<ProductDetailComponent>; let productService: jasmine.SpyObj<ProductsService>; let location: jasmine.SpyObj<Location>; beforeEach(async () => { const productServiceSpy = jasmine.createSpyObj('ProductsService', ['getOne']) const locationSpy = jasmine.createSpyObj('Location', ['back']); await TestBed.configureTestingModule({ imports: [ ProductDetailComponent ], providers: [ provideRouter([ { path: 'products/:id', component: ProductDetailComponent, }, ]), provideLocationMocks(), { provide: ProductsService, useValue: productServiceSpy }, { provide: Location, useValue: locationSpy } ] }) .compileComponents(); }); beforeEach(async() => { fixture = TestBed.createComponent(ProductDetailComponent); const productId = '1'; const harness = await RouterTestingHarness.create(); component = await harness.navigateByUrl(`products/${productId}`, ProductDetailComponent); productService = TestBed.inject(ProductsService) as unknown as jasmine.SpyObj<ProductsService>; location = TestBed.inject(Location) as unknown as jasmine.SpyObj<Location>; const productMock = {...generateOneProduct(), id: productId}; productService.getOne.and.returnValue(mockObservable(productMock)); fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); });
