кодовое покрытие Grails не может получить доступ к методу - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь выполнить тест в Grails 2 с Coverage, но я не могу получить доступ к методу:

Он сказал, что: "java.lang.IllegalStateException: не найден запрос с привязкой к потоку: Вы ссылаетесьзапрашивать атрибуты за пределами реального веб-запроса или обрабатывать запрос за пределами первоначально получающего потока? Если вы фактически работаете с веб-запросом и по-прежнему получаете это сообщение, ваш код, вероятно, выполняется за пределами 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 голосов
/ 20 сентября 2018

Вместо того, чтобы создавать экземпляр контроллера самостоятельно, используйте аннотацию @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)
    }

}
...