如何对呈现GSON视图的Grails 4拦截器进行单元测试

时间:2020-11-02 23:47:16

标签: grails

我正在为Interceptor设置单元测试,并且一切顺利,直到我找到了通过渲染gson视图返回涉及返回响应(而不是转发到控制器)的路径: render view: "/genericResponce", model: [r: model]

失败的测试看起来像这样:

    void 'prevents request from proceeding for non-admin user'()
    {
        setup:
        def userInfo = new UserInfo()

        userInfo.username = ''
        userInfo.userRoles = ['ROLE_NON_ADMIN']

        def result = new Ok<UserInfo>(userInfo)
        def userService = Mock(UserService) {
            1 * getUserInfo() >> result
        }

        interceptor.userService = userService

        when: 'We have non-admin roles'
        withRequest(controller: 'partners')

        then:
        interceptor.before() == false
    }

我收到以下异常:org.grails.web.servlet.mvc.exceptions.ControllerExecutionException: No view found for name [/genericResponce]

手动调用端点,我可以验证是否找到了视图并得到了期望的响应。我也尝试过在Spec类的“ views”属性中添加一个条目:views['/genericResponce'] = 'fff'。这似乎没有什么区别。

我还看到它建议解决不同但有些相似的问题,以尝试在Spec类中指定JSON解析器,但这也不起作用:

    static doWithSpring = {
        jsonSmartViewResolver(JsonViewResolver)
    }

我实际上并不在乎响应的内容,但是在对拦截器进行单元测试时,有没有办法让GSON视图解析?

0 个答案:

没有答案
相关问题