У меня есть 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 }]);
});
});
Я получилколлекция, но когда я пытаюсь вставить, я получил ошибку во время теста, какЯ прикрепил выше
спасибо за помощь мне