有沒有辦法使用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. 如何在scalacheck上重用生成的數據
- 2. 生成數據庫
- 3. 使用MySQL作爲數據庫從模型生成數據庫
- 4. 使用EDMX文件生成數據庫?
- 5. 使用mono生成數據庫的類
- 6. 使用Java生成數據庫報告
- 7. 從數據庫生成特定數據?
- 8. Swift的等效ScalaCheck? (測試數據生成框架)
- 9. 使用數據庫示例數據生成負載的工具
- 10. 生成從數據庫
- 11. JPA:數據庫生成列
- 12. 生成數據庫表
- 13. MVCscaffolding生成數據庫
- 14. Laravel生成數據庫
- 15. Rails - 生成.sqlite3-數據庫
- 16. EF4:對於新應用程序,爲空數據庫生成數據庫腳本,還是使用已生成表的數據庫生成類更好?
- 17. 數據庫中生成數據,即使我們在勺
- 18. 從數據庫表生成引用號
- 19. 無法使用模型生成數據庫創建數據庫表
- 20. 使用生產數據庫值填充開發數據庫
- 21. 使用C#來生成並記錄100000s成Postgres數據庫
- 22. 通過從數據庫中檢索數據來生成數字
- 23. 使用PLINQO生成的數據時使用存儲庫模式?
- 24. 如何使用生產數據庫中的數據刷新培訓數據庫?
- 25. 使用MVC模型生成ASP.NET網頁(保存數據到數據庫)
- 26. 使用目標數據庫的數據類型生成XML/SQL輸出
- 27. 使用尊重數據庫約束的數據自動生成SQL INSERT語句
- 28. 數據幀生成
- 29. 生成數據幀
- 30. 生產環境使用臨時數據庫而不是生產數據庫
AFAIK你必須自己創建發電機。可能你可以使用反射/宏創建一個通用函數 – pedrorijo91