我正在为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视图解析?