我正在尝试使用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)
}
}
出什么问题了?
谢谢
答案 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)
}
}