首页 文章

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

提问于
浏览
0

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

我创建了我正在使用的模拟mvc实例:

mvc = MockMvcBuilders.standaloneSetup(controller).setCustomArgumentResolvers(new GoogleOAuthUserResolver()).build();

但是,Spring还注册了将近30个其他的参数解析器,其中一个足够普遍,以至于它在我之前被用来解决这个问题 . 如何设置或排序解析器以便首先调用我的解析器?

2 回答

  • 0

    问题是我正在使用的Google OAuth库的 People 扩展 Map 并且模拟servlet API无法操纵处理程序的注册顺序 .

    我最终使用反射来达到模拟内脏并移除违规处理程序 .

  • 0

    这对我有用而没有反思:

    @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);
      }
    
    }
    

相关问题