3

我需要测试一个控制器,动作index(由 grailsgenerate-all命令生成)。我有一个这样的测试(在 Spock 中):

package mnm.schedule

import grails.test.mixin.*
import org.junit.*
import grails.plugin.spock.*
import spock.lang.Specification
import org.example.*;

class UserControllerSpec extends ControllerSpec {


def "test"() {
            setup:
            mockLogging(UserController, true)

            when:
            controller.index()

            then:
            redirectArgs.action == "list"
    }

} 

我收到这样的错误:

Error Error running script test-app :spock : cannot find shared instance field (Use --stacktrace to see the full trace)

过了一段时间我可以运行测试,测试就通过了。

究竟出了什么问题?为什么第一次显示该错误?我是 Spock 环境的新手。

提前致谢。

4

1 回答 1

3

鉴于您使用的是 Grails 2.xx,您应该使用 @TestFor 注释,它通过 mixins 增强单元测试框架类。

在您的情况下,您应该添加@TestFor(UserController)为类级注释,以便您可以使用该mockLogging方法。

于 2012-03-23T15:56:19.287 回答