我最近从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
知道导致这种情况的原因以及我如何解决这些问题?
答案 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似乎也有效。