При использовании архитектуры FSD (Feature-Sliced Design) и Jest для тестирования, файлы с расширением .test.ts обычно хранятся в той же директории, что и тестируемый код. Это позволяет легко находить и поддерживать тесты вместе с кодом, который они тестируют.
Пример структуры проекта:
src/
├── app/
│ ├── index.ts
│ └── app.test.ts
├── features/
│ ├── auth/
│ │ ├── ui/
│ │ │ ├── LoginForm.tsx
│ │ │ └── LoginForm.test.tsx
│ │ ├── model/
│ │ │ ├── authSlice.ts
│ │ │ └── authSlice.test.ts
│ │ └── index.ts
│ └── profile/
│ ├── ui/
│ │ ├── ProfileCard.tsx
│ │ └── ProfileCard.test.tsx
│ ├── model/
│ │ ├── profileSlice.ts
│ │ └── profileSlice.test.ts
│ └── index.ts
├── shared/
│ ├── api/
│ │ ├── api.ts
│ │ └── api.test.ts
│ ├── ui/
│ │ ├── Button.tsx
│ │ └── Button.test.tsx
│ └── index.ts
└── index.tsОписание:
app/:- Здесь хранятся файлы, связанные с инициализацией приложения. Тесты для этих файлов также находятся в этой директории.
features/:- Каждая фича (например,
auth,profile) содержит свои UI-компоненты, модели и другие части. Тесты для каждой части фичи находятся в соответствующих поддиректориях. - Например, тесты для
LoginForm.tsxнаходятся вLoginForm.test.tsx, а тесты дляauthSlice.tsнаходятся вauthSlice.test.ts.
- Каждая фича (например,
shared/:- Здесь хранятся общие компоненты, утилиты и другие ресурсы, которые используются в нескольких фичах. Тесты для этих ресурсов также находятся в соответствующих поддиректориях.
Преимущества такой структуры:
- Локальность: Тесты находятся рядом с тестируемым кодом, что упрощает их поиск и поддержку.
- Модульность: Каждая фича и общий код имеют свои тесты, что упрощает управление тестами и их запуск.
- Прозрачность: Структура проекта становится более прозрачной, так как тесты являются неотъемлемой частью кодовой базы.
Таким образом, файлы .test.ts хранятся в той же директории, что и тестируемый код, что соответствует принципам FSD и упрощает работу с тестами в проекте.