【发布时间】:2019-05-29 19:06:20
【问题描述】:
我正在开发一个 Spring Web 服务。我想测试我的端点,但由于某种原因,我在运行测试时总是遇到以下异常:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.....IncomingInterceptor'
但是,我用@Component 注释了这个类。当我使用外部客户端测试端点时,拦截器工作!有人知道如何解决这个问题吗?
这是我测试端点时的代码: 私有 MockMvc mockMvc;
@InjectMocks
private AccountController accountController;
@Mock
private IncomingInterceptor incomingInterceptor;
private Gson gson;
@Before
public void setup() {
gson = new Gson();
mockMvc = MockMvcBuilders.standaloneSetup(accountController).addInterceptors(incomingInterceptor).build();
}
@Test
public void testAddAccount() throws
mockMvc.perform(MockMvcRequestBuilders.post("/account/add")
.content(gson.toJson(account))
.contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.id").isNotEmpty());
}
IncomingInterceptor 的代码:
@Component
public class IncomingInterceptor extends HandlerInterceptorAdapter {
@Autowired
private Gson gson;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//code in here works
return true;
}
}
注意:我不想测试拦截器是否工作,我想测试端点!!! 提前致谢!
【问题讨论】:
标签: spring testing interceptor