import { expect } from '@jest/globals'; import { RenderResult, act, render } from '@testing-library/react'; import { AxiosPromise } from 'axios'; import { FactsApi } from './api'; import { Facts } from './index'; const fact = 'Funny fact chucknorris API Failed'; describe('', function () { let mockedGetRandomFact: AxiosPromise; let component: RenderResult; beforeEach(async () => { // @ts-ignore mockedGetRandomFact = jest.spyOn(FactsApi, 'getRandomFact').mockImplementationOnce(() => { return new Promise((resolve) => { return resolve({ data: { value: fact }, status: 0, statusText: '', headers: {}, config: {}, }); }); }); await act(async () => { component = render(); }); }); it('Should call getRandomFact on page load', () => { expect(mockedGetRandomFact).toHaveBeenCalledTimes(1); }); it('Should Fact be rendered on page load', () => { const value: Element = component.container.querySelector('.as-facts-main-left-fact'); expect(value.textContent).toEqual(fact); }); });