【发布时间】:2018-06-12 09:06:51
【问题描述】:
我目前正在运行一个堆栈,该堆栈由 Express 和 MongoClient 以及 Mocha 和 Chai 组成,用于测试。我正在为我的端点编写测试用例,并且不时出现随机错误。下面是我正在写的一套西装的 sn-p:
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 的数据库集合在我开始测试之前是完全空的,这样我就不会被旧数据卡住或处于不受控制的环境中。
【问题讨论】:
标签: node.js automated-tests mocha.js chai