Grails 1.3.5 controller test nulls命令对象
直接从“Grails的权威指南(第二版)”第104页开始:
void testLoginUserNotFound() {
mockRequest.method = "POST"
mockDomain(User)
MockUtils.prepareForConstraintsTests(LoginCommand)
def cmd = new LoginCommand(login:"fred", password:"letmein")
cmd.validate()
controller.login(cmd)
assertTrue cmd.hasErrors()
assertEquals "user.not.found", cmd.errors.login
assertEquals "/store/index", renderArgs.view
}
运行此测试时,它将失败:
junit.framework.AssertionFailedError: junit.framework.AssertionFailedError: null
...我追踪到的“cmd”引用在该点为null。在调用action.login之前,cmd有效并填充,之后为null。
如何测试命令对象?
没有找到相关结果
已邀请:
2 个回复
舶啥戚
不是
;然而,
用
信息抛出
。提供默认消息(
)或仅提供状态,
。 那么,让我们看看为什么
返回
。 - 那是因为自定义验证器没有返回
,而是一些字符串,根据“Groovy Truth”评估为
。 (在那里,自本书出版以来,Grails API似乎已经发生了变化。) 在
班,改变
至
然后,错误代码将是“LoginCommand.login.validator”。 如果您需要自定义错误代码,您可以自己添加错误对象(不返回任何内容),如下所示:
P.S。:你不应该直接使用
类,而是使用
。此外,
已被弃用;而且,它不适合命令对象。 - 使用
方法,继承自
。
庞协腿宛炯
测试看起来像这样: