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)
また、発電機のステップをスキップし、あなたには、いくつかのrealtionalデータベース、あなたが構造を入れ子にしているだろうと、その可能性を扱っている場合だけimplicit val arbHoge: Arbitrary[Hoge] = Arbitrary(for { ... } yield Hoge(...))
しかしを書くことができます。すでにHoge
用発電機を定義しているので
case class Fuga(h: Hoge, i: Int)
は、我々はFuga
同じ方法のための発電機を書くことができます。あなただけHoge
のような非常に基本的な構造を扱っている場合にも、我々はarbitrary[Hoge]
そして最後のノートでscalacheckで利用可能な標準任意の整数を使用したのと同じ方法ホーヘの任意のインスタンスを使用することができ
val fugaGen: Generator[Fuga] = for {
hGen <- hogeGen
iGen <- arbitrary[Int]
} yield Fuga(hGen, iGen)
この例では、shapelessを使用し、マニュアル定義をスキップできます。
関連する問題
- 1. scalacheckジェネレータを使用して時間を生成するにはどうすればよいですか?
- 2. オプションとしてデータベースデータを使用するdjangoフォームを作成する
- 3. scalacheckで任意のA =>日付を生成する
- 4. node.jsを使用してデータベースデータをエクセルファイルにエクスポートする方法は?
- 5. androidのデータベースデータを使用してキャンバスを描画する方法
- 6. ASP.NETを使用してコードビハインドからデータベースデータにアクセスするC#
- 7. scalacheckを使って任意の(正式な)Unicode文字を生成していますか?
- 8. グループPHPを使用してJSONとしてエンコードされたデータベースデータ
- 9. LinqToSqlを使用してデータベースデータを新しいデータベースにコピー
- 10. VB.NETを使用して特定のデータベースデータをExcelファイルに追加
- 11. Scalacheckは常にList [UUID]の任意のUUIDを生成します
- 12. ScalaCheckで特定のCharsetでエンコードできる文字列を生成する
- 13. データベースデータを使用してselectタグにオプションを設定する方法
- 14. scalacheck:
- 15. SQLMetalを使用して.dbmlを生成
- 16. Qtを使用してHTMLを生成
- 17. XPathを使用してXPathを生成
- 18. AS3を使用してムービーファイルを生成
- 19. JDenticonを使用してIdenticonを生成
- 20. Firebaseデータベースデータ - モバイルアプリ、またはFirebase Hosting WebアプリケーションのPDFを生成する場所
- 21. SVCUTIL.EXEを使用してNOAA Forcast用のDataContractsを生成する
- 22. Matlab Coderを使用して生産用アルゴリズムを生成
- 23. 鍵生成を使用して
- 24. データベースデータで拡張可能なListViewを使用する方法
- 25. 生産を生成するサーバーサイドアプリケーションを使用してindex.htmlを構築する
- 26. morrisエリアチャートを使用してビュー内にMVC 5(面皰)データベースデータを表示
- 27. Joomlaにデータベースデータをインポートする
- 28. ASP.NETでResponse.writeを使用してファイルを生成中にupdateprogressを使用する
- 29. Gradleを使用してjax-ws javaソースを生成する
- 30. エラー:node-fluent-ffmpegを使用してEACCESを生成する
AFAIKでは、発電機を自分で作成する必要があります。おそらく、リフレクション/マクロを使用して汎用関数を作成することができます – pedrorijo91