私は再生を使用しています!無効なモデルインスタンスを保存できるというテストを書いている間に発見されました。いくつかのインスタンス変数には無効な値があります。私はそれが検証と永続性を分離した状態に保つために期待される動作だと思います。しかし、データベース制約として検証アノテーションを再利用する方法はありますか?DBの制約としての再利用の検証
答えて
私はPlayについて何も知らない。 JSR 303検証アノテーションを使用していますか? Play documentationによれば、永続化のためにHibernateを使用できます。 Hibernate 3.5では、生成するスキーマ内でJSR 303アノテーションを使用して表現されたHibernate will include constraintsが表示されます。
いいえ、検証はデータベースの制約にリンクされていません。新しいevolutionsフレームワークのPlay 1.2.1を使用するなど、SQLを使用してデータベースに手動で制約を追加する必要があります。
ユニットテストでは、正しいデータを確認する必要があります。いずれにしても、モデル内のロジックをテストするだけで、クラス間の依存関係はなく、誤ったデータで保存されたインスタンスについては心配する必要はありません。
統合テストとセレンテストでは、コントローラコールで@Valid経由でPlayで提供される検証システムを使用できるはずです。ここでは、悪いデータを持つオブジェクトが永続化されていないことを確認し、いくつか追加しようとします。
evolutionsを使用していただきありがとうございます。私にとっては、モデルインスタンスの検証は、有効なものと不可能なものを決定するロジックがモデルの責任にあるため、単体テストに属します。私が単体テストで無効なモデルを保存しようとしたのは、純粋な奇妙なことから起こったのですが、それが私の精神モデルを破りました。さて、もう一度修正されました;) –
- 1. ミュールコネクタと検証フローの再利用
- 2. モデル制約の検証
- 3. 再利用RSpecの動作検証
- 4. Bean検証:メソッドの制約とグループ
- 5. カスタム制約の検証とヌル
- 6. エンティティのサービスとしてのカスタム制約の検証
- 7. フォームフィールドの複数の制約を再度検証する
- 8. のAlfrescoユニーク制約の検証:ユニーク
- 9. 複数の制約のスプリング検証
- 10. Play2.6のフォームを使用しない制約の検証
- 11. ノックアウト検証:動的制約
- 12. 整合性制約の検証Mysql
- 13. ビーン検証範囲の制約
- 14. MVC5での検証属性の再利用
- 15. Javascript再利用機能の約束
- 16. DB制約なしの一意性チェック
- 17. 再利用可能コンポーネントのredux-form検証
- 18. 再利用の検証方法。オブジェクトを変換する
- 19. データベース制約をRails検証に変換
- 20. 再作成デフォルトの制約 - 新しい制約が
- 21. Symfonyはオブジェクトの制約を検証しません
- 22. 標準ビーン検証アノテーションの新しい制約バリデータを登録
- 23. フォームの再利用時にフォームの検証が機能しない
- 24. DjangoでのHTML5制約の検証の有効化
- 25. MVC/EF DBファーストとSQL制約デフォルトタイムスタンプフィールド
- 26. SQLiteチェック制約とSQLite DBブラウザ
- 27. FOSUserBundle/Symfony2:ユーザーエンティティに対して検証制約が全く適用されない
- 28. .NETでのXML ID制約の検証に関する問題?
- 29. カスタム制約の検証は、時にはSymfony2の
- 30. Symfony2の:コールバック検証制約 - オブジェクトのプロパティが
JPAではなく、Hibernateに固有のことだと思いますが、間違っている可能性があります。また、Playではデフォルトで無効になっている可能性があります。しかし、ありがとう! –
はい、私が示したように、それはHibernate 3.5以降に特有です。私がリンクしているPlayドキュメントは、PlayがHibernateを使用できる、または使用していることを示しているため、これは実行可能でなければならないようです。 –
これはPlayがJPA(実装としてのHibernate)を使用するため無効になる可能性があるので、今晩テストする必要があります。私は、私が持っているプロジェクトの中には、それらを適用していないという事実を知っています。おそらくそれです。互換性のためにデフォルトで無効になっています(または有効になっていません)。 –