在mongodb中设置虚假数据进行测试

时间:2015-06-02 10:11:56

标签: node.js mongodb testing mongoose database

我们有一个项目,我们需要创建一个假数据库和假数据进行功能测试。最初我们开始使用一个脚本,使用mongoose创建实体,初始化它们并保存它们。

var StudentA = new Student();
StudentA.name = "Bob";
StudentA.surname = "Marley";
StudentA.save();

随着应用程序的增长和文档之间的关系的增加,这个脚本已经变得非常混乱。现在,它在我们投资应用程序开发的时间方面构成了瓶颈。

问题是,有更好的方法吗?例如一个以更有条理的方式用数据填充数据库的库?或者我们应该解析像csv文件这样的文件,然后将其推送到mongo?

问题在于mongodb,但它可以推广到任何需要填充假数据的NO-SQL数据库中。 (对于RDBMS,SQL语法更简单)

5 个答案:

答案 0 :(得分:6)

您可以尝试编写json文件而不是代码,并使用mongoimport重新创建数据库。 这比那些非常详细和重复的代码更容易维护。

答案 1 :(得分:4)

我同意上述解决方案并认为最好的方法是:

  1. 使用库工具生成虚假信息。
  2. 将虚假信息转换为json文件。
  3. 使用mongoimport将其上传到mongo。
  4. 我有些库允许你免费生成假数据,比如Faker.js(如果你熟悉node.js和js)或者你可以在这里使用免费的java版Faker :https://github.com/blocoio/faker

    我还在这里找到了付费解决方案:https://www.mockaroo.com/但不知道为什么有人愿意为此付费,因为生成假数据相当容易 - 这是一步一步的指南。

    将faker java库和json writer导入到项目中(我使用gradle,所以这里是gradle代码):

        repositories {
            maven { url 'https://jitpack.io' }
        }
    dependencies {
        compile 'com.github.blocoio:faker:1.0.1'
        compile 'com.googlecode.json-simple:json-simple:1.1.1'
    }
    

    使用以下java代码生成任意数量的假对象,这里我使用循环生成3个对象,并将其保存到json.file中。

    public class FakerTest {
        static FileWriter file;
        public static void main(String[] args) {
            try {
                file = new FileWriter("c:\\<Your Location>\\test.json"); //try opening the file
                for (int i = 0; i < 3; i ++) {
                    Faker faker = new Faker();
                    JSONObject obj = new JSONObject();
                    obj.put("Name", faker.name.firstName());
                    obj.put("address",faker.address.streetAddress());
                    obj.put("email",faker.internet.email());
                    file.write(obj.toJSONString());
    
                }
                file.flush();
                file.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    json文件的结果:

      

    {&#34;地址&#34;:&#34; 790墨菲   Vista的&#34;&#34;电子邮件&#34;:&#34; willa@schmittjenkinsandabernathy.net",&#34;名称&#34;:&#34; Christop&#34;} {&#34;地址&#34;:&#34; 7706   拉金   河&#34;&#34;电子邮件&#34;:&#34; martin_carter@ryanbartellandeffertz.com",&#34;名称&#34;:&#34; Braeden&#34;} {&#34;地址&#34;:&#34; 1893年   贾马克斯   其余&#34;&#34;电子邮件&#34;:&#34; cassidy_kris@ziemeankundingandblick.com",&#34;名称&#34;:&#34;马莉&#34;}

    现在,使用mongoimport上传它。

    faker库可以让你生成很多字段,请参考:

      

    https://github.com/stympy/faker/blob/master/README.md

答案 2 :(得分:2)

Download这个json文件由MongoDB提供。

你可以mongoimport使用:

mongoimport --db testDB --collection testCollection --file test.json

有关Mongoimport的更多详情,请访问here

答案 3 :(得分:0)

可以在此处找到更多示例以及documents-api。请在左上角的下拉菜单中选择合适的版本。

https://docs.mongodb.com/v3.6/reference/program/mongoimport/#examples

答案 4 :(得分:0)

您不需要安装 npm 工具或库来生成假数据,只需向项目添加额外不需要的任务即可。直接用Mockaroo这样的在线工具,导出为json,再导入到Mongo DB,如上。

Mockaroo

可能会节省一个小时的时间。