斯波克保存测试
问题描述:
余米想测试这种方法斯波克保存测试
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
}
和IM收到此错误: -
的java.lang。 NullPointerException:无法在空对象上获取属性'id'
如何可以我呼叫活动对象的ID
答
您的控制器操作假定将会有一个activity.id
参数,您的测试没有设置。
有更多的东西在这里继续是有用的:你的控制器中的哪一行是抛出异常?你使用的是哪个版本的Grails?什么版本的Spock? – 2012-09-06 14:20:42