У меня есть следующее:
@Injectable({ scope: Scope.REQUEST })
export class RequestScopedCache extends Object {
private storage: any = {};
public set(key: string, value: any) {
this.storage[key] = value;
}
public get(key: string) {
return this.storage[key];
}
}
Я хотел бы создать интеграционный тест (реальные зависимости) репозитория, который использует этот RequestScopedCache
.Это позволяет продемонстрировать коллегам, что реальные тесты интеграции и тесты частичной интеграции легко достижимы в NestJS.
При этом я обнаружил следующее:
describe('EnqueuedRepository', () => {
let repo: EnqueuedRepository;
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
imports: [AppModule, TypeOrmModule.forFeature([Enqueued]), CachingModule],
providers: [EnqueuedService, EnqueuedRepository],
controllers: [],
}).compile();
repo = app.get<EnqueuedRepository>(EnqueuedRepository);
});
it('should find by all', async (done) => {
const data = await repo.find();
console.log(`Got data: ${data}`);
done();
});
});
К сожалению, поскольку область действия RequestScopedCache
равна REQUEST
, NestJS не выполняет внедрение зависимостей в createTestingModule
.Как я могу подделать контекст запроса в тестах?