我在Grails中测试一个控制器。它使用的是具有此方法的模型:
def beforeInsert() {
if (password != null) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
当我尝试测试将密码保存到数据库的方法时,它会返回以下消息:java.lang.NullPointerException: Cannot invoke method encodePassword() on null object
如何告诉测试只是模拟该方法调用或忽略该方法调用?
答案 0 :(得分:0)
您可以在控制器测试中尝试类似下面的内容。
Domain.metaClass.beforeInsert = {-> }
PS:我没试过这个
如果可能,请同时粘贴单元测试代码。
答案 1 :(得分:0)
您需要在控制器本身中注入springSecurityService。
def springSecurityService
controller.springSecurityService = springSecurityService