Я пытаюсь издеваться над модулем Discord. JS. Модуль имеет класс Client, который я расширяю в своем классе "Bot". Я хочу смоделировать модуль, чтобы можно было смоделировать некоторые методы других классов, такие как «Сообщение» и «Канал», но я не могу понять, как смоделировать конкретный класс из NPM модуль. Попытка найти что-то на шутках и в Google, но результаты Google просто связаны с документами. Я продолжаю получать эту проблему class extends value of undefined is not a constructor or null
. Это то, что у меня есть в моем тестовом файле,
jest.mock('discord.js', () => ({
}));
, и я знаю, что мне нужно вручную насмехаться над другими классами (Client, Message, Channel, et c. Являются классами раздора. js module), но я не уверен, как это правильно сделать
У объекта сообщения есть свойство channel, которое является объектом канала, а у объекта канала есть метод .send (), поэтому я попробовал это
jest.mock('discord.js', () => ({
Client: jest.fn(),
Message: jest.fn().mockImplementation(() => ({
channel: jest.fn().mockImplementation(() => ({
send: jest.fn((x) => 'Hello World'),
})),
})),
}));
, но постоянно повторяется, что msg.channel.send - это не метод
describe('should test all commands', () => {
let info: BaseCommand;
let bot: Bot;
let msg: Message;
beforeAll(() => {
info = new InfoCommand();
bot = new Bot({});
msg = new Message(bot, null, null);
jest.spyOn(bot, 'addCommand');
});
test('should check if command arguments are invoked correctly', () => {
msg.channel.send('x');
});
});