我有以下域类:
package gcbgb
class Score {
Double victoryPoints
static belongsTo = [ player:Player, gameTable:GameTable ]
static constraints = {
victoryPoints nullable:true
}
}
表示在特定victoryPoints
玩游戏时收到的Player
特定GameTable
的数量。
我也有服务:
package gcbgb
import grails.transaction.Transactional
@Transactional class RoundService {
int tableRank(Score score) {
return Score.findAll("from Score as s where s.gameTable = ? and s.victoryPoints >= ?", [score.gameTable, score.victoryPoints]).size()
}
}
根据所获得的Player's
与其他GameTable
相比,victoryPoints
的某个Players
等级有助于确定每个package gcbgb
import grails.test.mixin.integration.Integration
import grails.test.mixin.TestFor
import grails.transaction.*
import spock.lang.*
@Integration
@Rollback
@TestFor(RoundService)
class RoundServiceSpec extends Specification {
def setup() {
}
def cleanup() {
}
void "test tableRank"() {
def player6 = new Player(name:"Player6").save(failOnError:true)
def player5 = new Player(name:"Player5").save(failOnError:true)
def player4 = new Player(name:"Player4").save(failOnError:true)
def player3 = new Player(name:"Player3").save(failOnError:true)
def player2 = new Player(name:"Player2").save(failOnError:true)
def player1 = new Player(name:"Player1").save(failOnError:true)
Round round1 = new Round(number:1, duration:"1.5").save(failOnError:true)
GameTable gameTable1 = new GameTable(gameName:"Game1")
round1.addToGameTables(gameTable1)
round1.save(failOnError:true)
Score score1 = Score.link(gameTable1, player1).setVictoryPoints(4).save(failOnError:true)
Score score2 = Score.link(gameTable1, player2).setVictoryPoints(3).save(failOnError:true)
Score score3 = Score.link(gameTable1, player3).setVictoryPoints(3).save(failOnError:true)
Score score4 = Score.link(gameTable1, player4).setVictoryPoints(2).save(failOnError:true)
Score score5 = Score.link(gameTable1, player5).setVictoryPoints(1).save(failOnError:true)
expect:
1 == service.tableRank(score1)
3 == service.tableRank(score2)
3 == service.tableRank(score3)
4 == service.tableRank(score4)
5 == service.tableRank(score5)
}
}
等级。
当然,我也有这个功能的集成测试:
<testcase name="test tableRank" classname="gcbgb.RoundServiceSpec" time="8.329"><failure message="org.hibernate.QueryException: could not resolve property: victoryPoints of: gcbgb.Score" type="org.hibernate.QueryException">org.hibernate.QueryException: could not resolve property: victoryPoints of: gcbgb.Score
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:62)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:56)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1831)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:46)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1806)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:510)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.findColumns(CriteriaQueryTranslator.java:525)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:66)
at org.hibernate.criterion.Junction.toSqlString(Junction.java:84)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:400)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:106)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:75)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:80)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1773)
at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:363)
at org.grails.orm.hibernate.query.AbstractHibernateCriteriaBuilder.invokeMethod(AbstractHibernateCriteriaBuilder.java:1687)
at org.grails.orm.hibernate.query.AbstractHibernateCriteriaBuilder.list(AbstractHibernateCriteriaBuilder.java:1558)
at gcbgb.RoundService.$tt__tableRank(RoundService.groovy:13)
at gcbgb.RoundService.tableRank_closure2(RoundService.groovy)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:96)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:93)
at gcbgb.RoundServiceSpec.$tt__$spock_feature_0_0(RoundServiceSpec.groovy:40)
at gcbgb.RoundServiceSpec.test tableRank_closure3(RoundServiceSpec.groovy)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at grails.transaction.GrailsTransactionTemplate$1.doInTransaction(GrailsTransactionTemplate.groovy:70)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at grails.transaction.GrailsTransactionTemplate.executeAndRollback(GrailsTransactionTemplate.groovy:67)
at gcbgb.RoundServiceSpec.test tableRank(RoundServiceSpec.groovy)
</failure></testcase>
然而,当我运行此测试时,我得到以下失败:
Score.victoryPoints
这表明我的$term_id =54 ;
$term_children = get_term_children( $term_id, $taxonomy );
$term_id = array();
foreach ( $term_children as $child ) {
$term = get_term_by( 'id', $child, $taxonomy );
$term_id[] = $term->term_id; //childern ids array.
}
成员存在问题。