Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为e2e测试有效地填充MongoDB数据库_Javascript_Mongodb_Express_Mocha.js_E2e Testing - Fatal编程技术网

Javascript 如何为e2e测试有效地填充MongoDB数据库

Javascript 如何为e2e测试有效地填充MongoDB数据库,javascript,mongodb,express,mocha.js,e2e-testing,Javascript,Mongodb,Express,Mocha.js,E2e Testing,我已按如下所述设置了我的环境: 这意味着我正在使用配置包选择一个环境 我想做的是在执行每个测试之前(重新)填充数据库。我希望这可以使用Mocha提供的beforeach()钩子来完成(我使用Mocha作为测试运行程序) 我的问题是什么是一次将大量数据加载到数据库中的有效方法(我正在使用Mongoose,以防产生影响。我不知道在插入时是否可以忽略这一点)?最好在与测试分离的文件中完成此操作。以下是我的工作: 在每次访问之前将数据库完全删除。您可以在mongoose连接上访问mongodb实例,如:

我已按如下所述设置了我的环境:

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

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

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

以下是我的工作:

在每次访问之前将数据库完全删除。您可以在mongoose连接上访问mongodb实例,如:
db.db.dropDatabase()

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

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

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

在每次访问之前将数据库完全删除。您可以在mongoose连接上访问mongodb实例,如:
db.db.dropDatabase()

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

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

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

我实际上完成了类似的操作。使用beforeEach连接到测试,删除数据库中的所有集合,并为每个实体重新填充所有集合。但是将所需的功能存储在单独的文件中以便于代码组织。听起来不错,单元测试应该独立运行,并设置和删除测试所需的内容。值得从相关数据库学习一些批量加载工具。祝项目的其他部分好运,我最终做了类似的事情。使用beforeEach连接到测试,删除数据库中的所有集合,并为每个实体重新填充所有集合。但是将所需的功能存储在单独的文件中以便于代码组织。听起来不错,单元测试应该独立运行,并设置和删除测试所需的内容。值得从相关数据库学习一些批量加载工具。祝项目的其余部分好运