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

1.8 KiB

Тестирование

Зачем нужен тестовый режим

Для юнит- и интеграционных тестов используется метод forTesting. В этом случае DataStoreModule работает на in-memory движке:

  • API полностью совпадает с production-режимом,
  • данные не сохраняются между перезапусками,
  • не требуется подключение к реальной базе данных.

Подключение в тестах

Вместо forRoot в тестовом модуле подключается forTesting.

// 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();
    });
});

Доступ к данным

Для задания данных в тестах достаточно получить бакет через сервис модуля:

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' });
});