Jest Typescript Mock указывает c классов, экспортируемых модулем, но не всеми - PullRequest
1 голос
/ 01 августа 2020

Я пытался выяснить, как лучше всего имитировать определенные c классы, которые экспортируются из модуля узла. В этом случае у меня есть код, который использует классы Message и TextChannel и MessageAttachment из discord.js. Я хочу имитировать Message и TextChannel, чтобы я мог легко настроить их для модульного тестирования, но я хочу, чтобы функциональность MessageAttachment оставалась, поэтому я не могу просто jest.mock("discord.js").

Я что-то пробовал аналогично:

const MockedMessage = jest.Mock<Message>;
const message = new MockedMessage();
message.content = "test"
...

Это отлично работает , если разногласие. js модуль имитируется . Однако, как указано выше, издевательство, которое также издевается над классом MessageAttachment, функциональность которого я хочу сохранить вместо насмешки. jest - но этот подход, похоже, не сработает при использовании TypeScript, если я действительно чего-то не упускаю.

Я также попытался, а затем использовал

import * as Discord from 'discord.js'
jest.mock('discord.js')
const {MessageAttachment} = jest.requireActual('discord.js');
Object.defineProperty(Discord, 'MessageAttachment', MessageAttachment);

, но, похоже, это тоже не работает

...