如何使用 cache2k 对过滤器进行单元测试

How to unit test a filter using cache2k

我有一个使用缓存的servlet过滤器,代码基本上是这样的

public class CustomFilter implements Filter {
    private  final Cache<String, ClientRequest> cache;
    @Autowired
    public CustomFilter(Service service){
    cache = Caching.getCachingProvider().getCacheManager()
            .createCache("requestsCache", 
            ExtendedMutableConfiguration.of(
                    Cache2kBuilder.of(String.class, 
            ClientRequest.class).entryCapacity(100)                                
            .expireAfterWrite(1000, TimeUnit.SECONDS)));
    }
}

关于如何在此过滤器中使用此 class 对方法进行单元测试的任何想法?提前致谢,

提取 Cache<String, ClientRequest> 创建到外部配置并通过过滤器构造函数注入它:

public class CustomFilter implements Filter {
  private final Cache<String, ClientRequest> cache;

  public CustomFilter(Cache<String, ClientRequest> cache) {
    this.cache = Objects.requireNonNull(cache);
  }

这样您就可以在单元测试中模拟缓存。这将允许单独测试 CustomFilter 业务逻辑,而不必处理缓存的复杂性。

之后您可能需要对缓存配置进行单独测试,例如通过使用 属性 定义到期超时。