【发布时间】:2012-07-10 02:09:42
【问题描述】:
我正在尝试测试这个方法
def save() {
def activityArtifactInstance = new ActivityArtifact(params)
def activityInstance = Activity.get(params.activity.id)
def uploadedFile = request.getFile('myFile')
if (!uploadedFile.empty) {
def userDir = new File(ConfigurationHolder.config.getProperty("userfiles").toString(), "/files")
userDir.mkdirs()
uploadedFile.transferTo(new File(userDir, uploadedFile.originalFilename))
activityArtifactInstance.fileName = uploadedFile.originalFilename
}
if (!activityArtifactInstance.save(flush: true)) {
render(view: "create", model: [activityArtifactInstance: activityArtifactInstance, activityInstance: activityInstance])
return
}
flash.message = message(code: 'default.created.message', args: [message(code: 'activityArtifact.label', default: 'ActivityArtifact'), activityArtifactInstance.id])
redirect(controller: "activity", action: "show", id: activityInstance.id, params: [phaseId:activityInstance.phase.id])
}
这是我的测试代码:-
def 'save action: valid activity artifact'() {
setup:
mockDomain(ActivityArtifact)
mockI18N(ActivityArtifactController)
controller.params.name = "Activity Artiface"
when:
controller.save()
then:
redirectArgs.action == "show"
controller.flash.message != null
}
我得到了这个错误:-
java.lang.NullPointerException:无法在空对象上获取属性“id”
如何调用活动对象的id
【问题讨论】:
-
这里有更多内容会很有用:控制器中的哪一行抛出异常?您使用的是什么版本的 Grails?什么版本的 Spock?
标签: unit-testing grails spock