grails:在域类中测试'sort'映射

时间:2014-07-23 08:42:14

标签: sorting grails testing mapping gorm

鉴于grails doc的例子:

class Airport {
    …
    static hasMany = [flights: Flight]
    static mapping = {
        flights sort: 'number', order: 'desc'
    }
}

如何测试排序?

2 个答案:

答案 0 :(得分:1)

正如文档中所述,它不像书面那样有效。您必须将static belongsTo = [airport:Airport]添加到Flight。

没有belongsTo,您会收到以下错误:

单向一对多关系不支持关联[机场 - >航班]的默认排序。

使用belongsTo,测试可能如下所示:

class SortSpec extends IntegrationSpec {
    def "test grails does sort flights" () {
        given:
        def airport = new Airport()
        airport.addToFlights (new Flight (number: "A"))
        airport.addToFlights (new Flight (number: "C"))
        airport.addToFlights (new Flight (number: "B"))
        airport.save (failOnError: true, flush:true)

        when:
        def sortedAirport = airport.refresh() // reload from db to apply sorting

        then:
        sortedAirport.flights.collect { it.number } == ['C', 'B', 'A']
    }
}

但是......编写这样的测试没有多大意义,因为它会检查grails是否应用了排序配置。我为什么要测试grails?测试您的代码,而不是框架。

答案 1 :(得分:0)

如果要进行关联排序,只需执行以下操作:

class UserProjectInvolvement {
Project project

 static mapping = {
    sort 'project.name'
 }
}

我正在使用2.4.4并且它运行良好。