-1

我正在尝试测试这种方法

  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

4

1 回答 1

1

您的控制器操作假定将有一个activity.id参数,并且您的测试没有设置一个。

于 2012-09-06T14:19:50.173 回答