【发布时间】:2010-11-03 12:37:21
【问题描述】:
直接来自“The Definitive Guide to Grails (Second Edition)”的第 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”引用为空。调用action controller.login之前,cmd有效并填充,之后为null。
如何测试命令对象?
【问题讨论】:
-
[-1] 我有一部分是对的(cmd 不为空),而在其他部分我是错的。 - 不过,我已经确定、下载并更正了示例,以便它们在实际的单元测试用例中工作。 - 我期待一些参与和由此产生的反应。 - 放弃的问题。
标签: unit-testing grails controller command-objects