# Тестирование ## Зачем нужен тестовый режим Для юнит- и интеграционных тестов используется метод `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' }); }); ```