首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Spring MockMvc配置为在内置参数解析器之前使用自定义参数解析器

将Spring MockMvc配置为在内置参数解析器之前使用自定义参数解析器
EN

Stack Overflow用户
提问于 2017-03-01 12:38:54
回答 2查看 2.2K关注 0票数 4

我有一个简单的测试用例。我有一个控制器,它的参数类型是Spring默认不支持的,所以我写了一个自定义的解析器。

我创建正在使用的模拟mvc实例,如下所示:

代码语言:javascript
运行
复制
mvc = MockMvcBuilders.standaloneSetup(controller).setCustomArgumentResolvers(new GoogleOAuthUserResolver()).build();

然而,Spring也注册了近30个其他参数解析器,其中一个足够通用,它被用来在我之前解决参数。如何设置或排序解析器,以便首先调用我的解析器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-05 11:21:27

问题是,我正在使用的People类和Google OAuth库扩展了Map和mock servlet API,它们没有提供任何方法来操作处理程序的注册顺序。

我最终使用反射进入mock内部并删除了有问题的处理程序。

票数 0
EN

Stack Overflow用户

发布于 2018-10-24 20:14:56

这对我来说很有效,不用考虑:

代码语言:javascript
运行
复制
@RequiredArgsConstructor
@Configuration
public class CustomerNumberArgumentResolverRegistration {

  private final RequestMappingHandlerAdapter requestMappingHandlerAdapter;

  @PostConstruct
  public void prioritizeCustomArgumentResolver () {
    final List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>(Objects.requireNonNull(requestMappingHandlerAdapter.getArgumentResolvers()));
    argumentResolvers.add(0, new CustomerNumberArgumentResolver());
    requestMappingHandlerAdapter.setArgumentResolvers(argumentResolvers);
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42523323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档