Files
docs/docs/60-common-modules/data-store/02-testing.md
T
2026-06-16 15:43:18 +03:00

56 lines
1.8 KiB
Markdown

# Тестирование
## Зачем нужен тестовый режим
Для юнит- и интеграционных тестов используется метод `forTesting`. В этом случае `DataStoreModule`
работает на **in-memory движке**:
- API полностью совпадает с production-режимом,
- данные не сохраняются между перезапусками,
- не требуется подключение к реальной базе данных.
---
## Подключение в тестах
Вместо `forRoot` в тестовом модуле подключается `forTesting`.
```ts
// example.spec.ts
import { Test } from '@nestjs/testing';
import { DataStoreModule } from '@src/server/data-store';
import { FooModule } from './foo/foo.module';
describe('FooModule', () => {
it('Инициализация', async () => {
const module = await Test.createTestingModule({
imports: [DataStoreModule.forTesting(), FooModule],
}).compile();
expect(() => module.createNestApplication()).not.toThrow();
});
});
```
---
## Доступ к данным
Для задания данных в тестах достаточно получить бакет через сервис модуля:
```ts
it('Запись данных в bucket', async () => {
const module = await Test.createTestingModule({
imports: [DataStoreModule.forTesting(), FooModule, BarModule],
}).compile();
const dataStore = module.get(DataStoreService);
const barService = module.get(BarService);
const bucket = dataStore.bucket('bar', 'test'); // доступ к bucket "test" модуля "bar"
await bucket.set(1, 'key', { value: 'bar' });
expect(await barService.bucket.get(1, 'key')).toEqual({ value: 'bar' });
});
```