В настоящее время я использую для тестирования стек, состоящий из Express и MongoClient с Mocha и Chai.Я работаю над написанием контрольных примеров для моей конечной точки и получаю случайную ошибку, которая время от времени появляется.Ниже приведен фрагмент одного из написанных мной костюмов:
describe('Recipes with populated database', () => {
before((done) => {
var recipe1 = {"search_name": "mikes_mac_and_cheese", "text_friendly_name": "Mikes Mac and Cheese","ingredients": [{"name": "elbow_noodles","text_friendly_name": "elbow noodles","quantity": 12,"measurement": "oz"},{"name": "cheddar_cheese","text_friendly_name": "cheddar cheese","quantity": 6,"measurement": "oz"},{"name": "gouda_cheese","text_friendly_name": "gouda cheese","quantity": 6,"measurement": "oz"},{"name": "milk","text_friendly_name": "milk","quantity": 2,"measurement": "oz"}],"steps": ["Bring water to a boil","Cook noodels until al dente.","Add the milk and cheeses and melt down.","Stir constantly to ensure even coating and serve."],"course": ["dinner","lunch","side"],"prep_time": {"minutes": 15,"hours": 0},"cook_time":{"minutes": 25,"hours": 1},"cuisine": "italian","submitted_by": "User1","searchable": true};
db.collectionExists('recipes').then((exists) => {
if (exists) {
db.getDb().dropCollection('recipes', (err, results) => {
if (err)
{
throw err;
}
});
}
db.getDb().createCollection('recipes', (err, results) => {
if (err)
{
throw err;
}
});
db.getDb().collection('recipes').insertOne(recipe1, (err, result) => {
done();
});
});
});
Метод collectionExists()
просто берет имя и возвращает обещание, которое разрешено до значения true/false
.Я уже сделал некоторую отладку, и она работает просто отлично.Проблема в том, что я попадаю в раздел кода, где я звоню createCollection
.Я получаю сообщение о том, что коллекция уже существует, что приводит к сбою моих тестов.Похоже, это происходит каждый третий раз, когда я запускаю свои тесты.
Цель всего этого - убедиться, что моя коллекция баз данных с именем recipes
полностью пуста, прежде чем я начну тестирование, поэтому я 'я не застрял со старыми данными или в неконтролируемой среде.