DEMO docs
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Тестирование
|
||||
|
||||
## Зачем нужен тестовый режим
|
||||
|
||||
Для юнит- и интеграционных тестов используется метод `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' });
|
||||
});
|
||||
```
|
||||
Reference in New Issue
Block a user