Ожидание конфигурации базы данных при запуске MongoUnit - PullRequest
0 голосов
/ 07 мая 2019

Я хочу запустить тест с MongoUnit, но я получил сообщение об ошибке «ReferenceError: регенератор не определен».Что я сделал не так?

Я знаю, что MongoUnit.start () возвращает Promise, и я делаю обратный вызов в .then () для работы с URL, но затем я хочу настроить свою базу данных с этим URL.Моя конфигурация базы данных - асинхронная функция, и я не понимаю, как я могу создать ожидающий процесс внутри .then () и перейти к следующему .then () только послеконфигурация базы данных.Пожалуйста, помогите ...)

1.конфигурация базы данных:

import Mongoose from 'mongoose';
import BlueBird from 'bluebird';
import config from 'config';
// ----------------------------
import logger from './src/utilities/logger'; 

const db = config.get('db');

export default async (url = `mongodb+srv://${db.username}:${db.password}@${db.host}/${db.name}`) => {
  Mongoose.Promise = BlueBird;
  Mongoose.connect(url, config.get('db.mongoose'), err => {
    if(err) {
      logger.error('+++ DB Error', err);
    } else {
      logger.info('+++ MongoDB connected');
    }
  });
};

2.UserTest

import MongoUnit from 'mongo-unit';
import {expect} from 'chai';
// -------------------------------
import TestData from './UserData';
import User from './../../src/collections/user';
import configureDB from './../../db';

describe('User Model', () => {

  before(() => MongoUnit.start()
    .then(url => configureDB(url)) // that moment I don't understand
    .then(() => MongoUnit.load(TestData)));

  after(() => MongoUnit.drop());

  it('should find all users', async () => {
    const users = await User.find();
    expect(users.length).to.equal(1);
    expect(users[0].username).to.equal('artem');
  });
});

ОБНОВЛЕНИЕ Я нашел решение.Я использую babel для поддержки ES6 на nodejs, и поэтому я получил сообщение об ошибке «ReferenceError: регенератор не определен» без каких-либо мелких деталей, которые import '@ babel / polyfill'; наначало моего тестового файла.

...