Node.js 在mongodb中设置假数据以进行测试
我们有一个项目,我们需要为功能测试创建一个假数据库和假数据。最初,我们从一个脚本开始,该脚本使用mongoose创建实体,初始化它们并保存它们Node.js 在mongodb中设置假数据以进行测试,node.js,mongodb,testing,mongoose,database,Node.js,Mongodb,Testing,Mongoose,Database,我们有一个项目,我们需要为功能测试创建一个假数据库和假数据。最初,我们从一个脚本开始,该脚本使用mongoose创建实体,初始化它们并保存它们 var StudentA = new Student(); StudentA.name = "Bob"; StudentA.surname = "Marley"; StudentA.save(); 随着应用程序的增长和文档之间关系的增加,这个脚本变得一团糟。现在,就我们投资于应用程序开发的时间而言,它构成了一个瓶颈 问题是,有没有更好的方法?e、 g.
var StudentA = new Student();
StudentA.name = "Bob";
StudentA.surname = "Marley";
StudentA.save();
随着应用程序的增长和文档之间关系的增加,这个脚本变得一团糟。现在,就我们投资于应用程序开发的时间而言,它构成了一个瓶颈
问题是,有没有更好的方法?e、 g.以更结构化的方式向数据库填充数据的库?或者我们应该像解析csv文件一样解析一个文件,然后将其推送到mongo
问题是mongodb,但它可以推广到任何需要填充伪数据的非SQL数据库中。(使用类似SQL的RDBMS语法更简单)您可以尝试编写json文件而不是代码,并使用mongoimport重新创建数据库。 这比冗长重复的代码更容易维护。这是MongoDB提供的json文件 您可以使用以下方法
mongoimport
it:
mongoimport --db testDB --collection testCollection --file test.json
有关Mongoimport的更多详细信息,请参见。我同意上述解决方案,并认为最好的方法是:
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();
}
}
}
公共类伪造测试{
静态文件编写器文件;
公共静态void main(字符串[]args){
试一试{
file=newfilewriter(“c:\\\\test.json”);//尝试打开文件
对于(int i=0;i<3;i++){
伪造者伪造者=新伪造者();
JSONObject obj=新的JSONObject();
obj.put(“Name”,faker.Name.firstName());
obj.put(“地址”,faker.address.streetAddress());
obj.put(“email”,faker.internet.email());
write(obj.toJSONString());
}
flush()文件;
file.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
json文件的结果:
{“地址”:“790墨菲
Vista”,“电子邮件”:willa@schmittjenkinsandabernathy.net“,”姓名“:”克里斯托普“}{”地址“:”7706
拉金
River“,”email“:”martin_carter@ryanbartellandeffertz.com,“姓名”:“布雷登”}{“地址”:“1893年”
贾马库斯
“休息”,“电子邮件”:“卡西迪”_kris@ziemeankundingandblick.com,“姓名”:“Marlee”}
现在,用mongoimport上传它
faker库将允许您生成大量字段,请参阅:
更多的例子以及api文档可以在这里找到。请在左上角的下拉列表中选择适当的版本
谢谢,但我宁愿使用自己的数据模型。在我的数据模型中,它不应该是一个随机数据,而是一个随机数据。这听起来足够健壮。在这种方法中是否有一种管理文档关系的简单方法?e、 g每个学生都有一个学校id作为字段。在我的脚本中,mongoose处理这个id创建阶段(仅当您创建对象时)-在这种方法中,我是否需要手动将id设置为学校并在json文档中链接它们?是的,您必须手动维护关系。请记住,
\u id
不需要是ObjectId。它可以是任何东西,只要它是独一无二的。所以school.json
可以包含:{id:1,name:“Foo”}
和student.json
可以包含{code>{id:“student\u 1”,school\u id:1,name:“John”}
。记住尝试嵌入文档,而不是创建“类似SQL的连接”。此外,我会使用不同(小)的json文件来确保我的所有测试保持独立,以避免庞大的数据集。我相信这是最好的方法,它并不完美,但目前还没有其他解决方案。
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();
}
}
}