Estoy siguiendo este Mock new Function() con Jest para burlarme de PubSub, desafortunadamente no tuve suerte.
jest.mock('@google-cloud/pubsub', () => jest.fn()) ... const topic = jest.fn((name) => ({ '@type': 'pubsub#topic', name })) const publish = jest.fn((data) => ({ '@type': 'Buffer', data })) const mockedPubSub = PubSub as jest.Mock<PubSub> mockedPubSub.mockImplementation(() => ({ topic }))Tengo dos errores.
El primero es uno de la línea.
PubSub as jest.Mock<PubSub>La conversión del tipo 'typeof PubSub' al tipo 'Mock<PubSub, any>' puede ser un error porque ningún tipo se superpone lo suficiente con el otro. Si esto fue intencional, primero convierta la expresión a 'desconocido'.
Y el segundo está en la última línea.
mockedPubSub.mockImplementation(() => ({ publish }))Argumento de tipo '() => { publicar: jest.Mock<{ '@type': string; datos: cualquiera; }, [datos: cualquiera]>; }' no se puede asignar a un parámetro de tipo '(...args: any) => PubSub'.
¿Cómo puedo burlarme de esto?
Encontré la respuesta
const mockTopic = jest.fn().mockImplementation(() => ({ get: jest.fn(), publish: jest.fn(), })); const mockPublish = jest.fn(); jest.mock('@google-cloud/pubsub', () => ({ __esModule: true, PubSub: jest.fn().mockImplementation(() => ({ topic: mockTopic, publish: mockPublish, })), }))