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

0

您也可以模拟 Industry 域对象:

@Mock([MyDomain, Industry])
于 2017-02-08T15:08:42.007 回答