所有服务器请求的@Pointcut不适用于测试上下文

时间:2019-05-10 10:00:59

标签: java spring-boot aop spring-aop intersection

我尝试使用@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均未与测试上下文或其他内容一起触发(

0 个答案:

没有答案