如何有效地为端到端测试填充 MongoDB 数据库
How to populate a MongoDB database for e2e testing effectively
我已按照此处所述设置我的环境:https://medium.com/developer-circles-lusaka/how-to-write-an-express-js-server-using-test-driven-development-921dc55aec07
这意味着我正在使用配置包 select 一个环境。
我想做的是在执行每个测试之前(重新)填充数据库。我希望这可以使用 Mocha 提供的 beforeEach() 钩子来完成(我正在使用 Mocha 作为测试运行器)。
我的问题是什么是一次将一堆数据加载到数据库中的有效方法(我使用 Mongoose 以防万一。我不知道在插入时是否可以省略它) ?最好在与测试分开的文件中完成。
这是我的做法:
在 beforeEach 中完全删除数据库。您可以访问猫鼬连接上的 mongodb 实例,例如:db.db.dropDatabase()
为我的域创建预配置的数据对象并将它们保存在我导入的模块中 - 简单的 JavaScript 对象。所以我有 data.users.vader 和 data.users.luke、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
批量加载数据 - 这主要用于性能测试查询等
我已按照此处所述设置我的环境:https://medium.com/developer-circles-lusaka/how-to-write-an-express-js-server-using-test-driven-development-921dc55aec07
这意味着我正在使用配置包 select 一个环境。
我想做的是在执行每个测试之前(重新)填充数据库。我希望这可以使用 Mocha 提供的 beforeEach() 钩子来完成(我正在使用 Mocha 作为测试运行器)。
我的问题是什么是一次将一堆数据加载到数据库中的有效方法(我使用 Mongoose 以防万一。我不知道在插入时是否可以省略它) ?最好在与测试分开的文件中完成。
这是我的做法:
在 beforeEach 中完全删除数据库。您可以访问猫鼬连接上的 mongodb 实例,例如:db.db.dropDatabase()
为我的域创建预配置的数据对象并将它们保存在我导入的模块中 - 简单的 JavaScript 对象。所以我有 data.users.vader 和 data.users.luke、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
批量加载数据 - 这主要用于性能测试查询等