Я хочу запустить тест с 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'; наначало моего тестового файла.