用GORM API测试domain类是一件很简单的事情,然而你还要注意一些事项。
第一,假如你在测试查询语句,你将经常需要flush以便保证正确的状态持久保存到数据库。
比如下面的一个例子:void testQuery() {
def books = [ new Book(title:"The Stand"), new Book(title:"The Shining")]
books*.save()
assertEquals 2, Book.list().size()
}
这个测试实际上会失败,因为调用save方法的时候,save方法不会真的持久保存book实例。
调用save方法仅仅是向Hibernate暗示在将来的某个时候这些实例应该会被保存。
假如你希望立即提交这些改变,你需要flush它们:void testQuery() {
def books = [ new Book(title:"The Stand"), new Book(title:"The Shining")]
books*.save(flush:true)
assertEquals 2, Book.list().size()
}
在这个案例中我们传递了flush的true值作为参数,更新将马上被保存,因此对此后的查询语句也有效。