我正在使用Play!框架并在编写测试时发现我可以保存无效的模型实例,例如某些实例变量的值无效。我想这是保持验证和持久性分离的预期行为。但有没有办法将验证注释重用为数据库约束?
答案 0 :(得分:1)
不,验证与数据库约束无关。您必须通过SQL在数据库中手动添加约束,例如使用Play 1.2.1的新evolutions框架。
在您的单元测试中,您必须确保数据正确无误。在任何情况下,您应该只测试模型中的逻辑,类之间没有依赖关系,只需做一些测试来检查可以使用它们的地方的意外参数的答案,但不要担心用错误数据保存的实例。
在集成测试和selenium测试中,您应该能够在控制器调用中使用Play通过@Valid提供的验证系统。在这里你应该确保没有持久存在坏数据的对象,试图添加一些。
答案 1 :(得分:1)
我对Play一无所知。你使用JSR 303验证注释吗?根据{{3}},它可以/确实使用Hibernate进行持久化。从Hibernate 3.5开始,Play documentation通过它生成的模式中的JSR 303注释表达。