我尝试使用@pointcut的某些变体来拦截对服务器的所有请求,但是它们不适用于测试上下文。
我的例子
@Pointcut("execution (public * example.server.web.rest..*(..))")
@Pointcut("within(example.server.web.rest..*)")
@Pointcut("within(@org.springframework.web.bind.annotation.RestController *)")
我只想用测试上下文捕获所有请求。如何设置必要的上下文?
已更新
@Aspect
public class UsersAspect {
@Pointcut("execution (public * example.server.web.rest..*(..))")
public void allServerRequests() {
}
@Around(value = "allServerRequests()")
public Object allServerRequest(final ProceedingJoinPoint pjp) throws Throwable {
//some code
return pjp.proceed();
}
}
配置类
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class UserAspectConfiguration {
private final UserService userService;
public UserAspectConfiguration(UserService userService) {
this.userService = userService;
}
@Bean
public UsersAspect userAspect(Environment env) {
return new UsersAspect(userService, env);
}
}
测试示例
@Test
@Transactional
public void checkAllServerRequestAspect() throws Exception {
UserDTO userDTO = new UserDTO();
userDTO.setSomething()
userService.updateUser(userDTO);
restUserMockMvc.perform(get("/api/any-rout")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isForbidden());
}
现在我只能使用这种切入点来捕获我的测试请求
@Pointcut("execution (public * example.server.service.UserService.*(..))")
但是所有服务器请求的@pointcut均未与测试上下文或其他内容一起触发(