NestJS - модульное тестирование Mongoose @InjectConnection - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть служба, которая использует декоратор @InjectConnection в своем конструкторе.

Я не могу создать модуль тестирования для этой службы.Выдается следующая ошибка: Nest can't resolve dependencies of the AttachmentsService (?, winston). Please make sure that the argument at index [0] is available in the TestModule context.

Конструктор службы:

  constructor(@InjectConnection() private readonly mongooseConnection: Mongoose,
              @Inject(Modules.Logger) private readonly logger: Logger) {
    this.attachmentGridFsRepository = gridfs({
      collection: 'attachments',
      model: Schemas.Attachment,
      mongooseConnection: this.mongooseConnection,
    });

    this.attachmentRepository = this.attachmentGridFsRepository.model;
  }

Конструктор тестового модуля:

const module: TestingModule = await Test.createTestingModule({
  imports: [
    WinstonModule.forRoot({
      transports: [
        new transports.Console({
          level: 'info',
          handleExceptions: false,
          format: format.combine(format.json()),
        }),
      ],
    }),
  ],
  providers: [AttachmentsService, {
    provide: getConnectionToken(''),
    useValue: {},
  }],
}).compile();

service = module.get<AttachmentsService>(AttachmentsService);

Я понимаю, что мне нужно будет смоделировать соединениеобъект может быть вызван GridFS, но в настоящее время я не могу получить тестовый модуль для сборки.

1 Ответ

0 голосов
/ 22 февраля 2019

Если вы не добавите явное имя подключения, nest.js будет использовать токен подключения по умолчанию DatabaseConnection, который определяется как константа пакетом nestjs-mongoose:

export const DEFAULT_DB_CONNECTION = 'DatabaseConnection';

Таким образом, вы можете использовать getConnectionToken('Database'):

providers: [AttachmentsService, {
  provide: getConnectionToken('Database'),
  useValue: {},
}]

Обновление 2019

Запрос на объединение был объединен.Теперь вы можете getConnectionToken().

Я создал запрос на получение , который позволяет getConnectionToken() без каких-либо параметров вернуть маркер подключения по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...