Loopbackjs 如何编写环回数据源的单元测试

Loopbackjs 如何编写环回数据源的单元测试,loopbackjs,loopback4,Loopbackjs,Loopback4,我希望在我的Loopback4项目中为我的mongodb数据源编写单元测试,但是我找不到任何示例 以下是我的数据源: import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core'; import {juggler} from '@loopback/repository'; const arrayStr: string[] = []; const config = { name: 'mongodb',

我希望在我的Loopback4项目中为我的mongodb数据源编写单元测试,但是我找不到任何示例

以下是我的数据源:

import {inject, lifeCycleObserver, LifeCycleObserver} from '@loopback/core';
import {juggler} from '@loopback/repository';

const arrayStr: string[] = [];

const config = {
  name: 'mongodb',
  connector: 'mongodb',
  // url: '',
  host: 'localhost',
  port: 27017,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  authSource: 'admin',
  database: 'testdb',
  ssl: false, // default to false
  sslValidate: false, // default to false
  useNewUrlParser: true,
  allowExtendedOperators: true,
  sslCA: arrayStr,
};


// Observe application's life cycle to disconnect the datasource when
// application is stopped. This allows the application to be shut down
// gracefully. The `stop()` method is inherited from `juggler.DataSource`.
// Learn more at https://loopback.io/doc/en/lb4/Life-cycle.html
@lifeCycleObserver('datasource')
export class MongodbDataSource extends juggler.DataSource
  implements LifeCycleObserver {
  static dataSourceName = 'mongodb';
  static readonly defaultConfig = config;

  constructor(
    @inject('datasources.config.mongodb', {optional: true})
    dsConfig: object = config,
  ) {
    super(dsConfig);
  }
}
我尝试过编写一个基本的构造函数测试:

import {MongodbDataSource} from '../../../datasources';
import {expect} from '@loopback/testlab';

describe('MongoDB Datasource (unit)', () => {
  // we recommend to group tests by method names
  describe('consturctor()', () => {
    it('basic constructor', () => {
      const ds = new MongodbDataSource();
      expect(ds.name).to.equal('mongodb'); // default name
    });
  });
});

但是,测试将挂起/停止且未完成。感谢您的建议。

当您创建一个新的数据源时,底层连接器(在您的情况下)将立即开始连接到数据库的过程,并将创建一个连接池。测试完成后,此池中打开的连接将阻止Node.js退出


个人认为,这是环回连接器实现中的一个错误,但是事情是这样的:P>当您创建一个新的数据源时,底层连接器(在您的情况下)将立即启动连接到数据库的过程,并将创建一个连接池。测试完成后,此池中打开的连接将阻止Node.js退出


个人,我认为这是环回连接器实现中的一个错误,但是这就是事情的原因,谢谢@ MiSravac选项3对我来说是有效的,尝试的选项2覆盖了一个没有参数的默认构造函数,但是它没有工作。谢谢@ MyRoSavr选项3对我来说是有用的,尝试使用选项2覆盖没有参数的默认构造函数,但它不起作用