1

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 アプリを実行すると、コントローラーは正常に動作します。何か案は?

4

1 に答える 1