При использовании архитектуры 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

Описание:

  1. app/:
    • Здесь хранятся файлы, связанные с инициализацией приложения. Тесты для этих файлов также находятся в этой директории.
  2. features/:
    • Каждая фича (например, authprofile) содержит свои UI-компоненты, модели и другие части. Тесты для каждой части фичи находятся в соответствующих поддиректориях.
    • Например, тесты для LoginForm.tsx находятся в LoginForm.test.tsx, а тесты для authSlice.ts находятся в authSlice.test.ts.
  3. shared/:
    • Здесь хранятся общие компоненты, утилиты и другие ресурсы, которые используются в нескольких фичах. Тесты для этих ресурсов также находятся в соответствующих поддиректориях.

Преимущества такой структуры:

  • Локальность: Тесты находятся рядом с тестируемым кодом, что упрощает их поиск и поддержку.
  • Модульность: Каждая фича и общий код имеют свои тесты, что упрощает управление тестами и их запуск.
  • Прозрачность: Структура проекта становится более прозрачной, так как тесты являются неотъемлемой частью кодовой базы.

Таким образом, файлы .test.ts хранятся в той же директории, что и тестируемый код, что соответствует принципам FSD и упрощает работу с тестами в проекте.


Назад