鉴于grails doc的例子:
class Airport {
…
static hasMany = [flights: Flight]
static mapping = {
flights sort: 'number', order: 'desc'
}
}
如何测试排序?
答案 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并且它运行良好。