Grails 1.1 测试 Web Flows - 测试Domain类

用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值作为参数,更新将马上被保存,因此对此后的查询语句也有效。