由spock创建的另一个域类创建的模拟域类

时间:2013-10-07 16:26:18

标签: unit-testing grails grails-domain-class spock

我正在尝试测试名为EnityContact的域类。在该类中有一个名为initialize的方法,它在需要时填充一些字段。为此,该方法创建了一些其他域类的实例:AisUser,Entity和CPerson。 AisUser是对SecurityUtil.retrieveCurrentAisUser(false)的调用返回的域类。

class EntityContact extends BaseObject implements Initializable{

    ....

    @Override
    void initialize() {
        println "initaliazing"
        isMain = false
        creationDate = new Date()
        createdBy = CPerson.get(SecurityUtil.retrieveCurrentAisUser(false).id)
        entity = new Entity()
        entity.setId(Long.valueOf(0)) //Id has to be initialized with some value
    }
}

我想要做的是找到一种方法来返回我在规范中定义的那些类的模拟。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在Groovy中you can mock static methods using MetaClass

SecurityUtil.metaClass.'static'.retrieveCurrentAisUser = { boolean param ->
}