Grails コントローラーの単体テストを書いています。コードのスニペットを次に示します。
@TestFor(MyController)
@Mock([MyDomain])
class MyControllerTests {
void testController() {
...
...
}
}
ドメイン オブジェクトは次のようになります。
class MyDomain {
static constraints = {
name(nullable: false)
parent(nullable: true)
}
static belongsTo = Industry
static hasMany = [children: Industry]
Industry parent
String name
}
私がテストしているコントローラーのメソッドは、この GORM 動的メソッドを呼び出します。
MyDomain.listOrderByParent()
@Mock アノテーションがすべての動的メソッドを追加する必要があるため、実行がこの行にヒットするとテストは失敗し、例外はあまり意味がありません。
groovy.lang.GroovyRuntimeException: Cannot compare com.stuff.MyDomain with value 'com.stuff.MyDomain : 1' and com.stuff.MyDomain with value 'com.stuff.MyDomain : 4'
at org.grails.datastore.mapping.simple.query.SimpleMapQuery$_executeQuery_closure63_closure155.doCall(SimpleMapQuery.groovy:78)
grails アプリを実行すると、コントローラーは正常に動作します。何か案は?