如何有效地填充用于e2e测试的MongoDB数据库



我已经按照这里的描述设置了我的环境:https://medium.com/developer-circles-lusaka/how-to-write-an-express-js-server-using-test-driven-development-921dc55aec07

这意味着我正在使用配置包来选择一个环境。

我想做的是在执行每个测试之前(重新(填充数据库。我希望这可以使用Mocha提供的beforeEach((钩子来完成(我使用Mocha作为测试运行程序(。

我的问题是,什么是一次将一堆数据加载到数据库中的有效方法(我正在使用Mongoose,以防产生影响。我不知道在插入时是否可以省略它(?最好在与测试分开的文件中进行。

以下是我所做的:

在beforeEach中完全删除数据库。您可以在您的mongoose连接上访问mongodb实例,如:db.db.dropDatabase()

为我的域创建预配置的数据对象,并将它们保存在我导入的模块中——简单的JavaScript对象。所以我有数据,比如data.users.vader和data.users.卢克,data.products.deathStar等

在我的测试中,我使用chaihttp来点击带有以下数据的路线:

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批量加载数据——这主要用于性能测试查询等

最新更新