grails代码覆盖无法使用方法

时间:2018-09-20 11:33:40

标签: testing grails code-coverage

我正在尝试使用Coverage在Grails 2中进行测试,但是我无法使用方法:

它说:  “ java.lang.IllegalStateException:找不到线程绑定的请求:您是在实际的Web请求之外引用请求属性,还是在原始接收线程之外处理请求?如果您实际上是在Web请求中进行操作并且仍然收到此消息,您的代码可能正在DispatcherServlet / DispatcherPortlet外部运行:在这种情况下,请使用RequestContextListener或RequestContextFilter公开当前请求...”

class UserController implements  ResourceLoaderAware{

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    respond User.list(params), model:[userInstanceCount: User.count()]
}

}

import grails.test.mixin.Mock
    import grails.test.mixin.TestMixin
    import grails.test.mixin.support.GrailsUnitTestMixin
    import spock.lang.Specification
    import com.snt.olucarodashboard.UserController
    import grails.test.mixin.TestFor


    @TestMixin(GrailsUnitTestMixin)

    class UserControllerSpec extends Specification {

        UserController controller=new UserController()
        void "Test the index action returns the correct model"() {
            when: "The index action is executed"
            controller.index(0)

        }
    }

出什么问题了?

谢谢

1 个答案:

答案 0 :(得分:0)

在类级别使用@TestFor批注,而不是自己实例化控制器

import grails.test.mixin.TestFor

@TestMixin(GrailsUnitTestMixin)
@TestFor( UserController )
class UserControllerSpec extends Specification {

    void "Test the index action returns the correct model"() {
        when: "The index action is executed"
            controller.index(0)
    }

}