NestJS: невозможно разрешить зависимости общей библиотеки во время тестов e2e.

Я работаю с монорепозиторием Nx, который включает в себя несколько приложений NestJS и общую библиотеку. Общая библиотека содержит настраиваемый подписчик MinimalClass, который импортируется в одно из моих приложений NestJS с помощью импорта AppModule. Хотя приложение NestJS работает нормально, его тесты e2e завершаются неудачей из-за проблем с разрешением зависимостей, связанных с этим подписчиком.

Соответствующие фрагменты кода следующие:

Минимальный подписчик :

      @EventSubscriber()
export class MinimalSubscriber implements EntitySubscriberInterface<any> {
  constructor(private readonly connection: Connection) {   
    connection.subscribers.push(this);
  }
}

МинимальныйПодписчикМодуль :

      @Module({
  providers: [MinimalSubscriber],
  exports: [MinimalSubscriber],
})
export class MinimalSubscriberModule {}

Этот модуль импортируется в AppModule приложения NestJS :

      @Module({
  imports: [MinimalSubscriberModule /* more imports */],
  // controllers, providers, etc.
})
export class AppModule {}

При запуске тестов e2e я сталкиваюсь со следующей ошибкой:

Nest не может разрешить зависимости MinimalSubscriber (?). Убедитесь, что аргумент Connection с индексом [0] доступен в контексте MinimalSubscriberModule.

Я использую TypeOrmModule.forRoot() во время настройки теста e2e в моем файле e2e.helper.ts:

      const moduleFixture: TestingModule = await Test.createTestingModule({
  imports: [
    TypeOrmModule.forRoot(getConfig(pg.port(), pg.host())),
    AppModule,
  ],
})
  .overrideProvider(HttpService)
  .useClass(MockHttpService)
  .compile();

(Обратите внимание, что здесь pg — это контейнер postgres, созданный с помощью тестовых контейнеров.)

Этот метод getConfig определен в orm.config.ts:

      export const getConfig = (
  port = 5432,
  host = process.env["POSTGRES_HOST"] ?? "localhost"
) => {
  // dotenv setup and more config
  return {
    type: "postgres",
    host,
    port,
    entities: [__dirname + "/**/*.entity{.ts,.js}"],
    // more config
  };
};

Эта ошибка возникает только во время тестов e2e, но не тогда, когда приложение нормально запускается с тем же вызовом TypeOrmModule.forRoot().

Есть ли что-то, чего мне не хватает в моей тестовой настройке e2e, что позволило бы NestJS правильно разрешить зависимость соединения в MinimalSubscriber общей библиотеки?

0 ответов

Другие вопросы по тегам