NestJS: Интеграционный тест с зависимостью REQUEST - PullRequest
0 голосов
/ 14 мая 2019

У меня есть следующее:

@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.Как я могу подделать контекст запроса в тестах?

...