有没有办法使用ScalaCheck生成伪造的数据库数据?例如,如果我将数据库模式定义抽入ScalaCheck,有没有一种方法可以生成我需要测试每个模型的测试?有没有办法保持参照完整性?使用ScalaCheck生成数据库数据
1
A
回答
1
您需要手动为模型创建生成器。您可以为生成器中的任何对象和类创建任意实例。例如:
case class Hoge(a: String, b: Int)
可以轻松生成:
val hogeGen: Generator[Hoge] = for {
aGen <- arbitrary[String]
bGen <- arbitrary[Int]
} yield Hoge(aGen, bGen)
为了你的财产测试自动使用这个,你需要生成一个隐含的任意实例。我建议在写这些时避免出现问题。
implicit val arbHoge: Arbitrary[Hoge] = Arbitrary(hogeGen)
你也可以跳过生成步骤,而直接写入implicit val arbHoge: Arbitrary[Hoge] = Arbitrary(for { ... } yield Hoge(...))
但是,如果你正在处理一些realtional数据库,它很有可能会嵌套结构。
case class Fuga(h: Hoge, i: Int)
既然你已经定义了发电机Hoge
,我们可以写一个发电机Fuga
以同样的方式。
val fugaGen: Generator[Fuga] = for {
hGen <- hogeGen
iGen <- arbitrary[Int]
} yield Fuga(hGen, iGen)
您还可以使用霍格的任意情况下,我们使用scalacheck提供的标准的任意整数,arbitrary[Hoge]
而最后一个音符,如果你只用很基本的结构,处理像Hoge
以同样的方式在这个例子中,你可以使用shapeless并跳过手动定义。
相关问题
- 1. 生成数据库
- 2. 生成数据库
- 3. 如何在scalacheck上重用生成的数据
- 4. 使用MySQL作为数据库从模型生成数据库
- 5. 使用Java生成数据库报告
- 6. 使用sqlalchemy生成数据库表
- 7. 使用EDMX文件生成数据库?
- 8. 使用mono生成数据库的类
- 9. 使用springboot生成MySql数据库
- 10. 从数据库生成特定数据?
- 11. Swift的等效ScalaCheck? (测试数据生成框架)
- 12. 使用数据库示例数据生成负载的工具
- 13. Laravel生成数据库
- 14. 笨生成数据库
- 15. Django的:生成数据库
- 16. 生成从数据库
- 17. MVCscaffolding生成数据库
- 18. JPA:数据库生成列
- 19. 生成数据库表
- 20. Rails - 生成.sqlite3-数据库
- 21. 从数据库生成
- 22. EF4:对于新应用程序,为空数据库生成数据库脚本,还是使用已生成表的数据库生成类更好?
- 23. 数据库中生成数据,即使我们在勺
- 24. 从数据库表生成引用号
- 25. 无法使用模型生成数据库创建数据库表
- 26. 如何使用EF模型和SDF数据库生成数据库?
- 27. 数据库集成和报表生成
- 28. 生成数据
- 29. 自动生成PHPMyadmin数据库的数据库图表?
- 30. 如何使用测试数据库代理生产数据库?
AFAIK你必须自己创建发电机。可能你可以使用反射/宏创建一个通用函数 – pedrorijo91