Добавить Jest-тесты для указанного файла в проекте expense-tracker.
How this skill is triggered — by the user, by Claude, or both
Slash command
/expense-tracker-plugin:test <filepath><filepath>sonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Сгенерируй Jest-тесты для файла `$0`, соблюдая соглашения проекта.
Сгенерируй Jest-тесты для файла $0, соблюдая соглашения проекта.
$0 — путь к файлу, для которого нужно написать тесты (относительный от корня монорепо или абсолютный)Read($0)
Разбери:
Backend (backend/src/...):
jest.fn() / jest.mock()*.spec.tsnpm run test --workspace=backend -- --testPathPattern=<имя файла>Frontend (frontend/src/...):
@testing-library/react и jest в frontend/package.json*.test.tsx (для компонентов/хуков) или *.test.ts (для утилит)npm run test --workspace=frontend -- --testPathPattern=<имя файла>Если тест-файл уже существует — сообщи об этом и выведи его путь. Предложи дополнить существующие тесты вместо создания нового файла.
import { Test, TestingModule } from '@nestjs/testing';
// импорт тестируемого класса и его зависимостей
describe('<ИмяКласса>', () => {
let sut: <ИмяКласса>;
// объявления моков
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
<ИмяКласса>,
{
provide: <ЗависимостьToken>,
useValue: {
<метод>: jest.fn(),
},
},
],
}).compile();
sut = module.get<<ИмяКласса>>(<ИмяКласса>);
});
describe('<имяМетода>', () => {
it('должен <ожидаемое поведение>', async () => {
// Arrange
// Act
// Assert
});
it('должен выбросить ошибку, если <условие>', async () => {
// ...
});
});
});
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { <КомпонентИмя> } from './<КомпонентИмя>';
describe('<КомпонентИмя>', () => {
it('рендерится без ошибок', () => {
render(<КомпонентИмя />);
expect(screen.getByRole('...')).toBeInTheDocument();
});
it('отображает <элемент> при <условии>', () => {
// ...
});
});
import { renderHook, act } from '@testing-library/react';
import { <useХук> } from './<useХук>';
describe('<useХук>', () => {
it('возвращает начальное состояние', () => {
const { result } = renderHook(() => <useХук>());
expect(result.current.<поле>).toBe(<ожидание>);
});
});
import { <функция> } from './<модуль>';
describe('<функция>', () => {
it('возвращает <ожидание> при <входе>', () => {
expect(<функция>(<аргументы>)).toBe(<ожидание>);
});
});
Для каждого публичного метода / экспорта напиши тесты:
Описания тестов (it(...)) — на русском языке, начиная с «должен».
Определи путь для тест-файла:
<директория исходника>/<имя>.spec.ts<директория исходника>/<имя>.test.tsx<директория исходника>/<имя>.test.tsЗапиши файл с помощью Write.
Проверь package.json воркспейса на наличие скрипта "test".
Если скрипт есть — запусти:
npm run test --workspace=<backend|frontend> -- --testPathPattern=<имя файла> --passWithNoTests
Если тесты упали — разбери ошибку, исправь тест-файл и повтори.
NestJS CLI создаёт проект с Jest. Если зависимости отсутствуют — установи:
npm install --save-dev @nestjs/testing jest @types/jest ts-jest --workspace=backend
Добавь в backend/package.json скрипт:
"test": "jest"
Если @testing-library/react не установлен:
npm install --save-dev jest jest-environment-jsdom @testing-library/react @testing-library/user-event @testing-library/jest-dom @types/jest ts-jest --workspace=frontend
Создай frontend/jest.config.ts:
import type { Config } from 'jest';
const config: Config = {
testEnvironment: 'jsdom',
transform: { '^.+\\.tsx?$': 'ts-jest' },
setupFilesAfterFramework: ['@testing-library/jest-dom'],
moduleNameMapper: { '^@/(.*)$': '<rootDir>/src/$1' },
};
export default config;
Добавь в frontend/package.json скрипт:
"test": "jest"
describe на класс/функцию/компонент, вложенные describe — на методыCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub alaricode/expense-tracker-market --plugin expense-tracker-plugin