Javascript 如何为e2e测试有效地填充MongoDB数据库
我已按如下所述设置了我的环境: 这意味着我正在使用配置包选择一个环境 我想做的是在执行每个测试之前(重新)填充数据库。我希望这可以使用Mocha提供的beforeach()钩子来完成(我使用Mocha作为测试运行程序) 我的问题是什么是一次将大量数据加载到数据库中的有效方法(我正在使用Mongoose,以防产生影响。我不知道在插入时是否可以忽略这一点)?最好在与测试分离的文件中完成此操作。以下是我的工作: 在每次访问之前将数据库完全删除。您可以在mongoose连接上访问mongodb实例,如:Javascript 如何为e2e测试有效地填充MongoDB数据库,javascript,mongodb,express,mocha.js,e2e-testing,Javascript,Mongodb,Express,Mocha.js,E2e Testing,我已按如下所述设置了我的环境: 这意味着我正在使用配置包选择一个环境 我想做的是在执行每个测试之前(重新)填充数据库。我希望这可以使用Mocha提供的beforeach()钩子来完成(我使用Mocha作为测试运行程序) 我的问题是什么是一次将大量数据加载到数据库中的有效方法(我正在使用Mongoose,以防产生影响。我不知道在插入时是否可以忽略这一点)?最好在与测试分离的文件中完成此操作。以下是我的工作: 在每次访问之前将数据库完全删除。您可以在mongoose连接上访问mongodb实例,如:
db.db.dropDatabase()
为我的域创建预配置的数据对象,并将它们保存在我导入的模块中——简单的JavaScript对象。所以我有像data.users.vader和data.users.luke、data.products.deathStar等数据
在我的测试中,我使用以下数据点击路线:
let user = data.users.vader;
chai.request(server)
.post('/users')
.send(user)
.end((err, result) => {
if (err) {
return callback(err);
}
result.should.have.status(200);
result.body.status.should.eq(enums.status.success);
result.body.data._id.should.be.a('string');
result.body.data.name.should.eq(user.name);
result.body.data.email.should.eq(user.email);
每个单元测试将删除数据库并创建所需的数据。我是这样开始的,这样每个测试都是独立的
稍后还可以使用mongodb的batchWriteItem
批量加载数据
我还创建了可以在单元测试中调用的函数,这些函数将使用batchWriteItem批量加载数据-这主要用于性能测试查询等
在每次访问之前将数据库完全删除。您可以在mongoose连接上访问mongodb实例,如:db.db.dropDatabase()
为我的域创建预配置的数据对象,并将它们保存在我导入的模块中——简单的JavaScript对象。所以我有像data.users.vader和data.users.luke、data.products.deathStar等数据
在我的测试中,我使用以下数据点击路线:
let user = data.users.vader;
chai.request(server)
.post('/users')
.send(user)
.end((err, result) => {
if (err) {
return callback(err);
}
result.should.have.status(200);
result.body.status.should.eq(enums.status.success);
result.body.data._id.should.be.a('string');
result.body.data.name.should.eq(user.name);
result.body.data.email.should.eq(user.email);
每个单元测试将删除数据库并创建所需的数据。我是这样开始的,这样每个测试都是独立的
稍后还可以使用mongodb的batchWriteItem
批量加载数据
我还创建了可以在单元测试中调用的函数,这些函数将使用batchWriteItem批量加载数据
——这主要用于性能测试查询等我实际上完成了类似的操作。使用beforeEach连接到测试,删除数据库中的所有集合,并为每个实体重新填充所有集合。但是将所需的功能存储在单独的文件中以便于代码组织。听起来不错,单元测试应该独立运行,并设置和删除测试所需的内容。值得从相关数据库学习一些批量加载工具。祝项目的其他部分好运,我最终做了类似的事情。使用beforeEach连接到测试,删除数据库中的所有集合,并为每个实体重新填充所有集合。但是将所需的功能存储在单独的文件中以便于代码组织。听起来不错,单元测试应该独立运行,并设置和删除测试所需的内容。值得从相关数据库学习一些批量加载工具。祝项目的其余部分好运