忽略Spock中的模拟模型调用

时间:2014-05-02 11:40:53

标签: unit-testing grails spock

我在Grails中测试一个控制器。它使用的是具有此方法的模型:

def beforeInsert() {
    if (password != null) {
        encodePassword()
    }
}

protected void encodePassword() {
    password = springSecurityService.encodePassword(password)
}

当我尝试测试将密码保存到数据库的方法时,它会返回以下消息:java.lang.NullPointerException: Cannot invoke method encodePassword() on null object

如何告诉测试只是模拟该方法调用或忽略该方法调用?

2 个答案:

答案 0 :(得分:0)

您可以在控制器测试中尝试类似下面的内容。

Domain.metaClass.beforeInsert = {-> }

PS:我没试过这个

如果可能,请同时粘贴单元测试代码。

答案 1 :(得分:0)

您需要在控制器本身中注入springSecurityService。

def springSecurityService
controller.springSecurityService = springSecurityService