0

我最近从 Grails 1.3.7 升级到了 Grails 2.0.1。应用程序运行正常,但是在清理测试时我遇到了这个麻烦。

我所有的测试都是 spock 测试。我在升级时将 spock 从 0.5-groovy-1.7 更新到了 0.6。

所有将到达 redirect() 行的控制器测试都在该行中失败,并出现相同的错误:

No bean named 'grailsLinkGenerator' is defined
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'grailsLinkGenerator' is defined

知道是什么原因造成的,我该如何解决?

4

1 回答 1

0

通过扩展 spock 的 ControllerSpec,这开始发生在我的控制器单元测试中。将其切换回扩展 spock.lang.Specification 修复了它。

规格:

package fileupload2

import static org.junit.Assert.assertThat
import static org.hamcrest.core.Is.is

import spock.lang.Specification;

import grails.test.mixin.TestFor
import grails.plugin.spock.ControllerSpec

@TestFor(FileUploadController)
//class FileUploadControllerSpec extends ControllerSpec {
class FileUploadControllerSpec extends Specification {

    def "the index should redirect to create" () {

        when:
            controller.index()

        then:
            assertThat(response.redirectedUrl, is('/fileUpload/create'))
    }

}

那个切口:

package fileupload2

class FileUploadController {

    def fileUploadService

    def index() {
        redirect (action: "create")
    }

    def create() {
        render(view: 'create')
    }

    def upload() {
        ... 
    }

}

我不愿意说这是一个错误,因为我已经进行了大约 2 周。

扩展 UnitSpec 似乎也有效。

于 2012-03-29T17:37:04.637 回答