Estoy tratando de escribir pruebas unitarias usando broma y tratando de burlarme de firebase-admin. Aquí está mi código de aplicación:
import logger from './logger'; import admin from 'firebase-admin'; class NotificationService { constructor() { admin.initializeApp({ credential: admin.credential.cert({ projectId: 'FCM_PROJECT_ID', privateKey: 'FCM_PRIVATE_KEY' clientEmail: 'FCM_CLIENT_EMAIL' }), }); } public async send(message: TokenMessage): Promise<ApiResponse<string>> { try { await admin.messaging().send(message) } catch (e) { logger.error(e); } } }Estoy tratando de burlarme del código como a continuación:
jest.mock('firebase-admin');Pero está fallando con:
firebase_admin_1.default.messaging is not a function¿Cuál es la solución?
Problema: no burlarse de las variables y métodos miembros ( messaging , send ) de firebase-admin.
Arreglar:
jest.mock('firebase-admin', () => ({ messaging: jest.fn().mockImplementation(() => { return { send: jest .fn() .mockReturnValue('message_id'), }; }), })); Nota: probablemente también necesite simular la credential e initializeApp la aplicación:
jest.mock('firebase-admin', () => ({ credential: { cert: jest.fn(), }, initializeApp: jest.fn(), messaging: jest.fn().mockImplementation(() => { return { send: jest .fn() .mockReturnValue('message_id'), }; }), }));