Я пытался выяснить, как лучше всего имитировать определенные 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);
, но, похоже, это тоже не работает