Grails 2.0.1:Spock测试失败,“没有bean名为'grailsLinkGenerator'被定义”,其中调用重定向

时间:2012-03-29 08:39:44

标签: testing grails-2.0 spock

我最近从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

知道导致这种情况的原因以及我如何解决这些问题?

1 个答案:

答案 0 :(得分: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'))
    }

}

CUT:

package fileupload2

class FileUploadController {

    def fileUploadService

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

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

    def upload() {
        ... 
    }

}

我不愿意说这是一个错误,因为我差不多有两个星期了。

扩展UnitSpec似乎也有效。