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

时间:2018-11-08 19:18:21

标签: java unit-testing 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)));
    }
}

关于如何在使用此类的过滤器中对测试方法进行单元化的任何想法?预先感谢,

1 个答案:

答案 0 :(得分:1)

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业务逻辑,而不必处理缓存的复杂性。

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