Me estoy burlando de una función en una biblioteca (auth0), de esta manera:
jest.mock('@auth0/auth0-react', () => ({ useAuth0: () => { return { logout: jest.fn(), } } }));Durante mi prueba, ¿cómo puedo esperar que se haya llamado a la función de cierre de sesión?
Dado que está tratando de simular manualmente un node_module , debe crear un archivo de módulo simulado. Los simulacros manuales se definen escribiendo un módulo en un subdirectorio simulacros / inmediatamente adyacente al módulo. En su caso, el simulacro debe colocarse en el directorio __mocks__ adyacente a node_modules .
root/ __mocks__ /@auth0/auth0-react.js
'use strict'; const handleRedirectCallback = jest.fn(() => ({ appState: {} })); const buildLogoutUrl = jest.fn(); const buildAuthorizeUrl = jest.fn(); const checkSession = jest.fn(); const getTokenSilently = jest.fn(); const getTokenWithPopup = jest.fn(); const getUser = jest.fn(); const getIdTokenClaims = jest.fn(); const isAuthenticated = jest.fn(() => false); const loginWithPopup = jest.fn(); const loginWithRedirect = jest.fn(); const logout = jest.fn(); export const Auth0Client = jest.fn(() => { return { buildAuthorizeUrl, buildLogoutUrl, checkSession, handleRedirectCallback, getTokenSilently, getTokenWithPopup, getUser, getIdTokenClaims, isAuthenticated, loginWithPopup, loginWithRedirect, logout, }; });test.ts (en caso de que esté escribiendo test en mecanografiado)
import { mocked } from 'ts-jest/utils'; const clientMock = mocked(new Auth0Client({ client_id: '', domain: '' })); describe('auth0 test', () => { it('should check logout is called', async () => { await my_logout_function(); expect(clientMock.logout).toHaveBeenCalled(); }); });test.js (en caso de que esté escribiendo pruebas en javascript)
const clientMock = new Auth0Client({ client_id: '', domain: '' }); describe('auth0 test', () => { it('should check logout is called', async () => { await my_logout_function(); expect(clientMock.logout).toHaveBeenCalled(); }); });