如何有效填充MongoDB数据库以进行端到端测试

我已经按照以下说明设置了环境:https://medium.com/developer-circles-lusaka/how-to-write-an-express-js-server-using-test-driven-development-921dc55aec07

这意味着我正在使用config包选择环境。

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

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

sp871783024 回答:如何有效填充MongoDB数据库以进行端到端测试

这是我的工作:

将数据库完全放到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://www.f2er.com/3124903.html

大家都在问