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

标签 javascript mongodb express mocha.js e2e-testing

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

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

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

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

最佳答案

这就是我所做的:

在 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);

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

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

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

关于javascript - 如何有效地填充 MongoDB 数据库以进行 e2e 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58799784/

相关文章:

javascript - 如何在 HTML canvas 中获取正确的鼠标坐标

javascript - 使用 Meteor 返回 MongoDB 中具有单个字符串值的数组

node.js - Ubuntu 中 Node.js 中的 REST API 与 Express、MongoDB 和 Mongoose。第一次连接时出现 MongoError : failed to connect to server [127. 0.0.1:27017]

javascript - 单击 jquery 添加类时屏幕闪烁

JavaScript/表单

javascript - 基于 D3 的条形图中的轴域不正确

mongodb - 如何在 mongodb compass 上插入具有当前日期和类型日期的文档

javascript - 替换数组字段值

javascript - Node.Js 的简单用户身份验证

node.js - Expressjs 应用程序,使用 websockets 进行聊天。为 websocket 服务器使用不同的端口?