Kord/apps/bot/tests/examples/Command.test.ts

34 lines
1.2 KiB
TypeScript

import { MockDiscord } from '../utils/MockDiscord';
// 예시로 사용할 가상의 Slash Command 핸들러입니다. 향후 실제 Command 객체로 대치될 수 있습니다.
const executePingCommand = async (interaction: any) => {
await interaction.deferReply();
const responseText = `Pong! User: ${interaction.user.username}`;
await interaction.editReply({ content: responseText });
};
describe('Behavior-Driven Test: Ping Command', () => {
let mockDiscord: MockDiscord;
beforeEach(() => {
// 테스트마다 깨끗한 Mock 환경 구성
mockDiscord = new MockDiscord();
});
describe('When the user invokes the /ping command', () => {
it('Then it should defer the reply and edit it with Pong and the username', async () => {
// 1. Given (상태 및 Mock Interaction 준비)
const mockInteraction = mockDiscord.createMockInteraction('ping');
// 2. When (핸들러 실행)
await executePingCommand(mockInteraction);
// 3. Then (결과 추적 및 스펙 충족 확인)
expect(mockInteraction.deferReply).toHaveBeenCalledTimes(1);
expect(mockInteraction.editReply).toHaveBeenCalledWith({
content: 'Pong! User: TestUser',
});
});
});
});