为了账号安全,请及时绑定邮箱和手机立即绑定

如何有效地填充 MongoDB 数据库以进行 e2e 测试

如何有效地填充 MongoDB 数据库以进行 e2e 测试

素胚勾勒不出你 2021-12-23 15:45:52
我已经按照此处的描述设置了我的环境:https : //medium.com/developer-circles-lusaka/how-to-write-an-express-js-server-using-test-driven-development-921dc55aec07这意味着我正在使用配置包来选择环境。我想做的是在执行每个测试之前(重新)填充数据库。我希望这可以使用 Mocha 提供的 beforeEach() 钩子来完成(我使用 Mocha 作为测试运行程序)。我的问题是什么是一次性将一堆数据加载到数据库中的有效方法(我正在使用 Mongoose 以防万一。我不知道插入时是否可以省略)?这最好在与测试分开的文件中完成。
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

这是我所做的:


在 beforeEach 中完全删除数据库。您可以通过 mongoose 连接访问 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);

每个单元测试都会删除数据库并创建所需的数据。我是这样开始的,这样每个测试都是独立的。


您也可以batchWriteItem稍后使用 mongodb 批量加载数据。


我还创建了可以在单元测试中调用的函数,这些函数将使用批量加载数据batchWriteItem- 这主要用于性能测试查询等


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信