我们有一个项目,其中我们需要创建一个假的数据库和假数据的功能测试。最初,我们从一个脚本开始,该脚本使用mongoose创建实体,初始化它们并保存它们。
var StudentA = new Student();
StudentA.name = "Bob";
StudentA.surname = "Marley";
StudentA.save();随着应用程序的发展和文档之间关系的增加,这个脚本已经变得一塌糊涂。现在,它对我们投资于应用程序开发的时间构成了瓶颈。
问题是,有什么更好的方法吗?例如,一个以更结构化的方式用数据填充数据库的库?或者我们应该像csv文件一样解析一个文件,然后将它推送到mongo?
问题在于mongodb,但它可以推广到任何需要填充假数据的非SQL数据库中。(对于RDBMS来说,使用类似SQL的语法更简单)
发布于 2015-06-02 10:24:49
您可以尝试编写json文件而不是代码,并使用mongoimport重新创建数据库。这比数公里的非常冗长和重复的代码更容易维护。
发布于 2015-11-19 07:19:06
我同意上述解决方案,认为最好的办法是:
有一些库允许您免费生成假数据,比如Faker.js (如果您熟悉node.js和js ),或者您可以在这里使用免费java版本的Faker:https://github.com/blocoio/faker。
我还在这里找到了一个付费解决方案:https://www.mockaroo.com/,但不知道为什么有人会为此付费,因为生成假数据相当容易--下面是一步一步的指南。
将faker java库和json编写器导入到项目中(我正在使用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文件的结果:
{“地址”:“790墨菲维斯塔”,"email":"willa@schmittjenkinsandabernathy.net",“名称”:“"email":"martin_carter@ryanbartellandeffertz.com",”}{“地址”:“7706 Larkin River",”email“:”martin_carter@ryanbartellandeffertz.com“,”Name“:”Braeden“}{”地址“:”1893年Jamarcus Rest","email":"cassidy_kris@ziemeankundingandblick.com","Name":"Marlee"}
现在,用mongoimport上传它。
faker库将允许您生成许多字段,请参阅:
发布于 2015-06-02 11:12:33
下载这个由MongoDB提供的json文件。
您可以使用以下方法对其进行mongoimport:
mongoimport --db testDB --collection testCollection --file test.json有关Mongoimport的更多详细信息可以找到这里。
https://stackoverflow.com/questions/30593185
复制相似问题