Soy un nuevo caso de prueba angular. Y golpeó con la carga de JSON a través de una llamada HTTP.
Podemos llamar al método estático usando spyOn pero no pude averiguar cómo inyectar HTTP y cargar json y suscribirme allí
¡¡Realmente necesito ayuda!! y muchas gracias de antemano
Parece que estás abordando el problema de manera incorrecta. Debe simular el método en "load-json.service.ts", el método simulado debe devolver el JSON exacto
Si está probando algunos componentes, lo siguiente es lo que sugiero.
Aviso en los proveedores, estamos obligando al componente a usar nuestro LoadJsonService simulado.
... const jsonDataObj = {foo: 'bar'}; const mockedLoadJsonService = { getJson:()=> JSON.stringify(jsonDataObj) } beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ ... ], declarations: [...], providers: [ { provide: LoadJsonService, useValue: mockedLoadJsonService }, ], }).compileComponents(); }); ...Te puedo dar un ejemplo de mi proyecto. Tal vez te ayude a hacerte una idea.
describe("Interviews service", () => { let httpClientSpy: jasmine.SpyObj<HttpClient>; let interviewsService: InterviewsService; beforeEach(() => { const apiUrlsServiceFake = jasmine.createSpyObj('ApiUrlsBuilderService', ['getApiUrl']); httpClientSpy = jasmine.createSpyObj('HttpClient', ['post']); interviewsService = new InterviewsService(httpClientSpy, apiUrlsServiceFake); }); it('should create new interview and return new interview data', (done: DoneFn) => { const expectedNewInterviewData: NewInterviewData = { id: 1234, encodedId: "qweasd" }; httpClientSpy.post.and.returnValue(asyncData(expectedNewInterviewData)); interviewsService.createNewInterview(1111, "New interview").subscribe({ next: newIwData => { expect(newIwData).withContext("Expect new interview data").toEqual(expectedNewInterviewData); done(); }, error: done.fail }); expect(httpClientSpy.post.calls.count()).withContext('one call').toBe(1); }); });