NestJS, Jest -> тест с сервером БД не выполнен - ​​Ошибка типа [ERR_INVALID_ARG_TYPE] - PullRequest
0 голосов
/ 17 октября 2019

У меня есть jest runner, который запускает тест jest e2e вручную с помощью Nest, и для интеграционного теста я использую MongoMemoryServer для тестирования в файле jest e2e. Мой бегун создает экземпляр БД, подключается к БД и передает объект БД в файл спецификации. мой бегун - это модуль npm, и я выполняю бегун через bin, как:

npm run e2e

или

runner --config ./test/jest-e2e.conf.ts

в моем jest-e2e-conf.ts. Я создаю соединение с БД, запускаюмое гнездовое приложение, а затем бегун запускает jest.cli для выполнения всех спецификаций.

в файле спецификаций. Я должен вставить что-то в базу данных и получить следующую ошибку:

TypeError [ERR_INVALID_ARG_TYPE]: The "otherBuffer" argument must be one of type Buffer or Uint8Array. Received type object
at ClientSession.equals (node_modules/mongodb-core/lib/sessions.js:163:30)
  at s.sessions.s.sessions.filter.s (node_modules/mongodb/lib/topologies/topology_base.js:295:56)
      at Array.filter (<anonymous>)
  at ClientSession.session.once (node_modules/mongodb/lib/topologies/topology_base.js:295:41)
  at ClientSession.endSession (node_modules/mongodb-core/lib/sessions.js:127:10)
  at executeCallback (node_modules/mongodb/lib/utils.js:395:17)
  at bulkWrite (node_modules/mongodb/lib/operations/collection_ops.js:926:21)
  at bulk.execute (node_modules/mongodb/lib/operations/collection_ops.js:133:14)
  at err (node_modules/mongodb/lib/utils.js:411:14)
  at executeCallback (node_modules/mongodb/lib/utils.js:401:25)
  at handleCallback (node_modules/mongodb/lib/utils.js:128:55)
  at resultHandler (node_modules/mongodb/lib/bulk/common.js:485:14)
  at command (node_modules/mongodb-core/lib/wireprotocol/command.js:96:5)
  • из кода бегуна, который мне удается вставить в БД, также приложение, подключенное к mongo / mongoose, как и должно

мой код бегуна:

 this.server = new MongoMemoryServer({instance: {port, dbName: 'testdb'}});
    this.mongoUri = await this.server.getConnectionString();
    this.connection = await MongoClient.connect(this.mongoUri, {useNewUrlParser: true});
    this.db = this.connection.db(await this.server.getDbName());


const col = this.db.collection('test');
    const result = await this.col.insertMany([{ t: 1 }, { b: 1 }]);

это работаиз кода бегуна

, а затем, в конце, я передаю объект this.db в файл спецификации через службу из модуля npm и импортирую его в файл спецификации как:

SpecConfig.setConfig(specConfig);

specConfig - это объект, который теперь имеет свойство DB

мой тестовый файл импортировал SpecConfig из mppm npm и получил объект db, и он выглядит нормально, мой тест:

import { SpecConfig } from 'test-runner';
import { Db } from 'mongodb';

describe('test (e2e)', () => {

  beforeAll(async () => {
  });

  it('should start mongo server', async () => {
    const db = SpecConfig.getConfig('db');
    expect(db).toBeDefined();
    const col = db.collection('test');

    // here is the line that throw error
    const result = await col.insertMany([{ a: 1 }, { b: 1 }]);
  });

});

Я получилколлекция, но когда я пытаюсь вставить, я получил ошибку во время теста, какЯ прикрепил выше

спасибо за помощь мне

...